inherit (child, base) {
        Object.defineProperty(child, 'super_', {
            value: _.isFunction(base) ? base : _.noop,
            configurable: false,
            enumerable: false,
            writable: false
        });

        child.prototype = Object.create((_.isFunction(base) ? base.prototype : base), {
            constructor: {
                value: child,
                enumerable: false,
                writable: true,
                configurable: true
            }
        });

        return child;
    }
Creates an inheritance relation between the child and the parent, adding a 'super_' attribute to the
child, and setting up the child prototype.

@param {Function} child - The target object to create parent references for,.
@param {Function} base - The parent association to assign to the provided child definition.
@returns {*}