Added tests for OAuthManager->authorize()
Added tests for OAuthManager->login(), extracted a UserRepository and StateManager model
Update service provider
Update composer dependencies
Reorganize exceptions into their own namespace
Update ProviderUserDetails to be more explicit about what properties will be available
Added basic test for ProviderUserDetails
Add Request dependency to StateManager class to remove call to  superglobal
- Add basic tests for StateManager
- Lower visibility on a few methods in StateManager that were only needed internally
- Move throwing of exception when state verification fails out into OAuthManager
Add basic tests for Provider
Update service provider to register requests dependency in each provider to remove call to $_GET superglobal

Not entirely satisfied with this as it makes instantiating a provider a little more cumbersome. Thinking I may abstract the request behind an interface, and have the OAuthManager inject it into each provider automatically as they are registered. Not sure yet...
Quick and dirty patchwork example working for reference
Add fairly pointless IdentityRepository test. Lots of monkey patching and mocks, not so many assertions.
Remove debugging method, oops
Replace stupid monkey patching test with a functional test that actually proves something
Remove Patchwork dependency since switching to functional testing for things that would have otherwise required monkey patching
Fix typo
Move FunctionalTestCase out of package namespace and just manually autoload it
Make FunctionalTestCase abstract so PHPUnit doesn't try to run it on it's own
Update OAuthManager and IdentityRepository tests and refactor slightly so tests actually catch a bug I've come across before. Mocks are a pain in the ass.