Move Fetch operation to network namespace

Moving Fetch into its proper namespace.

It means we can remove the repository instance that was being passed to the `Remote`. However, if we do that we can't keep an `[Obsolete] Fetch` on the `Remote`

This PR version is without the obsolete, but I also have a version with the obsolete. Which one do you prefer?