Refactored external authorization.

Authorization can now be done via a new abstraction layer. This allows Shims to write their own or use the two pre-made ones for OAuth v1 and v2.

Note: This is untested.

References #3