Make oauth a provider type

This PR includes:

  * Slight rearrange of files
  * Addition of a OAuth provider interface
  * Additional tests to ensure that Github is an OAuth provider
  * Changes to enforcing interface variables so that attributes are now enforced.
  * Auto creation on start up of all OAuth provider urls for use as needed.
  * Addition of some simple logic that does the following:
    * If a provider requires OAuth and that OAuth isn't present, redirect to go and perform the OAuth.

  * A test to prove above

The redirect works in theory (and you can test it by logging out and going to ``/features``. Angular isn't currently expecting any kind of redirect response when it does a $resource of ``/features`` so in reality this doesn't really help much.

The reason for that addition is so that when I finish the JIRA implementation, you'll be redirected off to confirm the new app only when you need to (rather than having to manually click somewhere to start it off).

Once this has been merged (and I find some more time ;) ), I'll be continuing with #65. I guess I'll have to deal with the Angular redirect in that.