Updated the method so that *all* accesses to the future cache...

are synchronized. I think this is a simple race condition, so I'd rather
lock on this guy, so that it doesn't accidentally return null where it
shouldn't. I think this will solve the occasional null pointer
exceptions.
Modifications to the cache mechanism.

Read the docs and so I'm doing it the way the docs want it to be done.
This is supposedly the right way to get and update the cache.

Now we'll need performance tests to make sure that it's not going to ask
multiple times for the data in the cache...
Merge pull request #981 from rackerlabs/REP-558

Updated the method so that *all* accesses to the future cache...