OAuth Support

Still Incomplete. Still Big (it's a big feature). 

I've opened this as a PR against the test refactoring branch so that we can see just the OAuth changes. I'll look in to breaking it up further, but it's pretty interconnected. I'll try to get the rest of the OAuth support in as separate PRs (against this branch) so we can at least review that piece by piece.

If you want an example of how incomplete this is, Ctrl-F on the Files Changed tab for "public class Andrew" ;)