Oauth weckel

Newly refactored oauth. Please remove oauth_weckel branch and oauth branch after merge is complete.

Thanks!