Remote enhancements

This adds support for ```git ls-remote```-like functionality. It is often useful to have a look at the refs available remotely without cloning, hence the "in memory" versions of a repository and a remote.