datastore: refactor transaction & datastore.

Hello again!

I rearranged a few things, hopefully for the better. I'll leave comments. :)
The diff between `lib/datastore/index.js` and the new `lib/datastore/transaction.js`: http://www.diffchecker.com/pk9m7y8k -- removed unused variables (that only applied to `Datastore`), and `module.exports = Transaction` vs `module.exports.Transaction = Transaction` (like the change to `Query`).