Moved cache queue before of the store get function. (up to 2x performance boost).

Hi! This change prevents the cache store from being bursted. I'm getting up to 200% performance boost when using a local redis store, and should be higher with caches located farther.
Thanks.  Can you please add tests for this?  E.g.,

```

            context("when an error is thrown in the work function", function () {
                var fake_error;

                beforeEach(function() {
                    fake_error = new Error(support.random.string());
                });

                it("bubbles up that error", function (done) {
                    cache.wrap(key, function () {
                        throw fake_error;
                    }, ttl, function (err) {
                        assert.equal(err, fake_error);
                        done();
                    });
                });
            });
```
around line 360 in caching.unit.js and something similar in multi_caching.unit.js?