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]
Fix error in V2::Client#current_user
fix v1 #read_manifest to look in write locations
Make BaseClient#request public, for plugins
In RestClient, accept paths with or without a leading slash
Add BaseClient#request_raw method, needed for vmc curl
Merge pull request #1 from vito/master

fix v1 #read_manifest when read/write locations differ
Remove support for systems without UAA
Remove out-of-date comment
Fix bug and add tests for V2::Base#stream_file
Fix bug in RestClient
Fix auth header bug in UAAClient