Fetch support.

This supersedes #203.

It looks mostly ready so I'm open to suggestions. It misses tests (again :-S) and documentation.
I'd be wary of returning a mutable version instead of what we "promise", but that's your call.