Network: allow downloading from a url

This is our implementation of in-memory remotes. Ask the repository to
fetch/list from a url instead of a remote.
CommitFilter: add simplify-by-first-parent option

Now that this is doable directly inside the revision walker, let's
expose it as a possible filter option.

This fixes #258.
Rename CommitFilter.FirstParent to FirstParentOnly
Refactored Network.Fetch() with FetchOptions

Changed the signature to Network.Fetch(Remote, FetchOptions). As of
#536, optional parameters should be grouped in a xxxOptions type.
Network.Fetch() has currently 5 optional parameters, and a sixth one
(RefSpecs) will be introduced soon.