Refactoring

- Added `this.state()` and `this.then()` to `Deferreds`
- Refactored `client.request()` to utilize a `Deferred` instead of a `Promise` so that users can leverage `this.always()` etc.
- Refactored `utility.when()` to return a `Deferred`
- Refactored `Deferred` factory to not utilize `utility.when()` to avoid recursion
- Refactored data store methods utilize `Deferreds` instead of `Promises`
- Fixed error handling within `data.update()`
- Misc padding
- Updated docblocks