Remote: specify the refspecs and callbacks in Fetch

The Remote interface mixes the configuration of a remote with overriding
the configuration for a paritcular operation. This makes the remotes
trickier to use than they should be.

Move towards letting the user specify the refspecs and callbacks they
want for a particular Fetch() operation intsead of setting it for a
Remote object that they then need to throw away.
Remote: reorg push