Use password grant, store all token data

Previously, we stored only the access token, which is a
base64-encoded string consisting of two JSON hashes. We
now store all of the data returned by the response from
the UAA, including the refresh token.

Also, we no longer lazily decode the access token. Instead,
the UAAClient decodes it as soon as it gets the response,
and adds the decoded data to the `token` hash.
Move #login_prompts into shared LoginHelpers module
Refactor V1 and V2 Base client classes

- Extract separate RestClient class for doing low-level HTTP work.
- Pull common code from V1::Base and V2::Base into BaseClient
- Expand test coverage for RestClient (code that was previously in
  BaseClient)

[#41057685]
Include request data in errors from API calls

[#41057685]
Remove unused methods
Add missing #proxy accessor on RestClient
Fix error when RestClient#trace is true
Fix errors in RestClient refactor

- Make POSTs and PUTs set their payload correctly
- Follow redirects correctly

[#41057685]
Refactor storage of access token

Add CFoundry::AuthToken class, which handles
- extraction of data from access token
- assembling auth header
- conversion to hash for saving to YAML file

[#41057685]