datastore: refactor transaction & datastore.

Hello again!

I rearranged a few things, hopefully for the better. I'll leave comments. :)
The only concerns we have with datastore/index.js are:

- does it expose the correct api? (`dataset`, `Int`, and `Double` methods)
- does it call out to `require('./entity').Int` when `require('./datastore).Int` is called?
- does it call out to `require('./entity').Double` when `require('./datastore').Double` is called?

The mocking of `./entity` lets us verify that index.js is dispatching `Int` and `Double` calls to where we defined those functions. The functionality and behavior of `entity.Double` and `entity.Int` should be tested in `test/datastore/entity.js` as `lib/datastore/entity.js`.