[WIP] Add OAuth2 support

This PR is quite unfinished, but will hopefully start discussion on whether this is the way to go for adding OAuth2 support. I took some ideas from the [commerceguys plugin](https://github.com/commerceguys/guzzle-oauth2-plugin) for Guzzle 3.