Oauth (Part I)

This is a **FULLY** decoupled approach to an OAuth authentication/authorization workflow. See how other alternatives require the drupal backend to be accessible by end users in order to:

  - Register an application key & secret.
  - Defining authorization levels.
  - Defining authorization contexts. Just a bunch of authorization levels.
  - Loging in the user to grant access to a token.

They're also tightly coupled to Form API :wink: 

This approach assumes that there is no possible interaction to the Drupal installation beyond the RESTful API. Only the user1 can have access to it.

Also, everything is implemented as entities and therefore it can be easily turned into an endpoint. This way an implementor can easily build an administration frontend (if needed).

Since this is going to be a big PR, I want to break it in different parts.