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.
@hpique yeah actually in that case makes sense, but I don't know if this could eventually confuse others. Anyway I just wanted to keep this in mind for the future.