function isClass (fn) {
    if (!(typeof fn === 'function' && fn.prototype)) { return false; }
    var getKeys = isES5 ? Object.getOwnPropertyNames : keys;
    var allKeys = getKeys(fn.prototype);
    return allKeys.length > 0 && !(allKeys.length === 1 &&
            allKeys[0] === 'constructor');
}
Takes an object or a constructor function and returns that object or
constructor with streamified versions of its function properties.
Passed constructors will also have their prototype functions
streamified.  This is useful for wrapping many node style async
functions at once, and for preserving those functions' context.

@id streamifyAll
@section Utils
@name _.streamifyAll(source)
@param {Object | Function} source - the function or object with
node-style function properties.
@api public

var fs = _.streamifyAll(require('fs'));

fs.readFileStream('example.txt').apply(function (data) {
    // data is now the contents of example.txt
});