Composes one or more functions into a new one.
@function module:sjl.compose
@returns {Function}
function compose (/* [func,] */) {
        var args = argsToArray(arguments);
        return function (arg0) {
            return args.reduceRight(function (value, arg){
                return arg(value);
            }, arg0);
        };
    }