Chainable fetch

__Do not review before #89.__

Simpler syntax for `Cache` fetches by using a chainable `Fetch` object.

```swift
cache.fetch(URL: URL).onSuccess { JSON in
    // Do something with JSON
}
```

Inspired by @mattt's use of chainable request/response methods in Alamofire. The implementation is totally different, as fetches can be synchronous when hitting the memory cache and also we don't have a private queue for fetches.
@joanromano At the very least you need this if you use the cache directly (via `set`). I have used this (in the ObjC version) to cache values from a bundle. I could have written some kind of BundleFetcher, but it would have been too much boilerplate code for a very simple thing.