Make SteamAPIClient more flexible in preparation for future changes

* Add forceCache parameter to the get* functions so that you can easily have different behavior between calls
* SteamAPIClient should not handle any request data
* Prefer $options in constructor so that any option can be overridden without hardcoding the values of the precedents
* `get` takes a data array for reasons similar to the above bullet
* Assume app IDs and player IDs are mutually exclusive, so remove trailing/leading underscores from cache paths
* Replace magical API_KEY definition with an "api.key" file