Start fixing error codes and names

I've started to notice a few possible errors with regards to errors:

 1. `invalid_client` should return a 401
 2. Missing username/password with password grant should be an `invalid_request` not an `invalid_client`
 3. Missing client_id when using auth_code grant should be an `invalid_client` not an `invalid_request`

This would be a breaking change so would go into 2.1 + may be others so wanted to discuss first.

Relevant section of spec: http://tools.ietf.org/html/rfc6749#section-5.2

Will also have a look at how other implementations handle these cases