basic Uri response cache implementation
support forceNoCache to fetch a response always from the server
use forceNoCache if a request was not successfull
refactored (added inheritance) for requests and api services
ensure that responses != Success are not cached

If a uri response from the cache is != Success, it will cause the
services to make a fresh call to the remote server and not just use a
cached "bad" response.
ApiRequest.ToUri is now public
improved comments
refactored HttpGetResponse and added caching