adding an OAuth2 client implementation

No tests ATM. There's a separate changeset here that's whitespace changes only.