Simplified Promise logic for localStorage driver - closes #307

I updated the whitespace since this revision removed the nested promises, I can put the extra indent back in for the sake of the diff if it's too difficult to read.

Also, I had to add a hook to `test.api.js` to require the Promise lib - once I removed the nested promises, the outer Promise wasn't there to catch an undefined error from the `localforage.ready` stub.
@tofumatt The error was that `Promise` was undefined inside the test file, not that error handling wasn't being bubbled properly. The reason it probably never surfaced before is probably because the driver methods would wrap the `self.ready` call within another Promise which would catch an error. That made the test appear to be returning a rejected Promise, but it was actually throwing an undefined error and since the Promises were nested they created the same effect.

 I think regardless you'll probably want to add that before hook in the test, unless you anticipate that the `self.ready` call could throw an error? In which case that might be why the driver was using nested Promises.