Adding a non-protobuf allocate_ids method on Dataset.

Partially address #336.
Yes, my monkey patch doesn't take it this far, but I can do that if you think it's clearer. I can fix this by making `id()` in `test_entity._Key` return `self` instead of:
```python
    def id(self, id_to_set):
        self._called_id = id_to_set
        return id_to_set
```
WDYT?