Update client to conform to OAuth2 spec

This commit also includes a bunch of other changes.

The only non-functional change made to the library is that the code has
been updated to support ARC.

The first change made to the library was to remove AFOAuthAccount. This
decision was made because an account abstraction only makes sense for
the `password` grant type. The `password` grant type is the only grant
type with any sort of account identifier in the request or response. The
response from the token endpoint only returns information about the
token, and the best representation for this is a 'credential' object.
Thus, all authentication success handlers are now given a
`AFOAuthCredential` object. The removal of the account class also
prompted `AFOauthAccountCredential` to be renamed to `AFOAuthCredential`

The second change made to the library was to make the `client_id` and
`client_secret` values into readonly properties on the client object.
This removes the need to pass these values as parameters repeatedly,
when there is no need to. They are fixed and unchanging values. This
mimics the behavior in `AFOAuth1Client`, where the `key` and `secret`
properties were treated in much the same manner.

The third change to the library was to remove the check for token
expiration in the success callback for sending an OAuth token request.
While checking for an expired credential and renewing it is a good idea,
an expired credential would never be returned from a request to the
token endpoint. In addition to this, the success callback also now
checks for an `error` field and calls the `failure` callback if it
exists.

The fourth change made to the library was to the credential object. The
`secret` property was removed from the object, because it is intrinsic
to the client, not the credential. The `tokenType` property was added
because it provides critical information on how the access token should
be used.

The fifth change was to add the header `Accept: application/json` to
each OAuth request, because all responses should be formatted in JSON,
according to the spec. For this reason, the `AFJSONRequestOperation` is
also registered as an HTTP operation class. The `parameterEncoding`
property is left untouched, at the default value of
`AFFormURLParameterEncoding`.

Lastly, support for the `authorization_code` grant type was added, as
per the OAuth spec.
Added convenience method for initialization
Updated code example in README
Add ability to specify scope for password credentials grant
Add client credentials grant type
Add client credentials grant type to header

Oops.
Rename operation to not overshadow callback
Add basic keychain persistence

Uses NSCoding to encode the credentials
Allow for null parameters
Use old refresh token if necessary

From Section 6 of RFC 6749:

"The authorization server MAY issue a new refresh token, in which case
the client MUST discard the old refresh token and replace it with the
new refresh token."

The client was not falling back on the old refresh token in the new
credential object, if none was specified in the response.
Add keychain usage to README
Changed class constructor to return instancetype
Whitespace
Minor reformatting

Adding documentation stubs
Moving AFOAuth2Client source files into subdirectory
Adding AFOAuth2Client.podspec