Refactor Transaction and Dataset into DatastoreRequester

Might be missing documentation in a few areas because I wanted to get the structural changes out first before we refine it.

Separates the request logic out from Dataset and Transaction into a `DatastoreRequester` which probably isn't the best name but can be refactored as well. Feel free to send suggestions.
I don't think the old way was too bad: https://github.com/GoogleCloudPlatform/gcloud-node/blob/master/lib/datastore/transaction.js#L390-400 If nothing else, just fix L251 to `if (this.id) {`

Also, new line use is a little inconsistent. I like more new lines, but we should use them the same. e.g.:

```js
\n
if () {
  // ...
}
\n
if () {
  // ...
}
\n
req = // ...
var res = // ...
```

Grouping var decls is fine, but not ifs or other statements.