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.
Can you add:

```
/**
 * @private
 * @module datastore/request
 */
```

and then annotate the places its required:

```js
/**
 * @type module:datastore/request
 * @private
 */
```