Better errors

* Changes to support passthrough of errors from the API.  Previously we were providing misleading error codes in a lot of cases
* Added a test to make sure these passed through appropriately
* Moved the "load_tokens" call out of the initialize method.  In the pairing use case, this throws an error, since the client is not yet paired.  Refactored the "get_token" method to call load_tokens if the token is not found directly.
* Also corrected a minor error in the test formatting that was hardcoding a value instead of using the helper constant
If this is a straight up bug fix (which it looks like it is) then move it to its own pull request so I can add it to the gem quickly. Preferably with different syntax and a test that reveals the bug.

`pem ||= get_local_pemfile` in a method call is too clever for my taste. Better would be pem ||= get_local_pem_file as a standalone line, followed by the key call.