fixing more bugs in caching logic

- adding bumpCache() to HttpStorage to just update cache timer for an object by its path
- updating save() in HttpStorage to never save an object with empty response, and dump any object already saved with that path
- updating logic in request() in HttpClient to either bump cache timer or save new object based on response code