curryArguments = function curryArguments(args) {
            /**
             * when returning with a promise within a multibrowser promise like
             *
             * ```js
             * matrix.url(...).getTitle().then(function () {
             *     return matrix.getSource()
             * })
             * ```
             *
             * we will have problems as we are running through curryArguments twice.
             * Therefor check if the onFulFilled handler is from the Q library and
             * handle that promise as usual here.
             * It's an ugly hack but the only way to get around with this and having
             * nice curried arguments.
             *
             */
            if (onFulfilled.toString() === multibrowser.qResolve) {
                return onFulfilled.apply(this, arguments);
            }
            if (arguments.length === 1 && !Array.isArray(args)) {
                return onFulfilled.call(this, args);
            }

            if (arguments.length > 1) {
                args = Array.prototype.slice.call(arguments);
            }

            var result = {};
            for (var i = 0; i < browserNames.length; ++i) {
                result[browserNames[i]] = args[i];
            }
            return onFulfilled.call(this, result);
        }
curry arguments
as multibrowser commands return with an array of results for each instance
respectively (see q.all) we need to curry them (expand arguments) to help
users to better work with the results

uncurried original version:
```js
matrix.getTitle().then(function (result) {
    expect(result[0]).to.be.equal('title of browser A')
    expect(result[1]).to.be.equal('title of browser B')
})
```

curried version:
```js
matrix.getTitle().then(function (result) {
    expect(result.browserA).to.be.equal('title of browser A')
    expect(result.browserB).to.be.equal('title of browser B')
})
```