Wrapped up functionality in a Repo type

The reason for this is so that we can snap in and out of
directories, and all of it be transparent to the user.

It means we can have a load of repos on the blow and we
don't have to remember which directory we're working in.

Means we can name each Repo too. Thank me later!