Adds `extend` and `extendWith` static methods to the passed in constructor for having easy extensibility via said
methods;  I.e., passed in constructor will now be extendable via added methods.
@see sjl.defineSubClass(superClass, constructor, methods, statics)
@function module:sjl.makeExtendableConstructor
@param constructor {Function}
@returns {*}
function makeExtendableConstructor (constructor) {
        var extender = function (constructor_, methods_, statics_) {
            return defineSubClass(constructor, constructor_, methods_, statics_);
        };

        /**
         * Extends a new copy of self with passed in parameters.
         * @memberof class:sjl.stdlib.Extendable
         * @static sjl.stdlib.Extendable.extend
         * @param constructor {Function|Object} - Required.  Note: if is an object, then other params shift over by 1 (`methods` becomes `statics` and this param becomes `methods`).
         * @param methods {Object|undefined} - Methods.  Optional.  Note:  If `constructor` param is an object, this gets cast as `statics` param.  Also for overriding
         * @param statics {Object|undefined} - Static methods.  Optional.  Note:  If `constructor` param is an object, it is not used.
         */
        constructor.extend =
            constructor.extendWith =
                extender;

        // Return constructor
        return constructor;
    }