Features/git cleanups

Implements #fetch! on a repo.

Return full refs from #resolve to fix both some inconsistent behaviour and to do the most reasonable thing since it's used internally.