Refactored token persistence and other improvements

This is squash of commits:

- 4c2d44b Refactored token persistence, added support for GitHub Application OAuth, allowed manually setting access_token
- 35125f0 Removed inheritdoc comments
- ae078cd Updated class comment
- ddf9531 Adding unit tests
- 2aaab9f Added TokenFactory tests  - [x] Add some tests
- 4a04d04 Added Signer tests
- 6c28fdb Refactored to use Guzzle-style testing namespace
- 7b44036 Added grant type test
- db3155d Fixed typos, added more unit test
- 521b7c3 Added persistence tests
- 5c8c1f9 Switched to the Guzzle History subscriber for mock request testing to avoid nasty anonymous scope inspection
- 0c37011 Update composer.json