fetch() should cache results

It would be easier to work with resources if `fetch()` would transparently cache sub-resources and only send a new request if explicitly told so. That way the application does not need to keep track of whether the resource has already been loaded or not.