Updated Repo class to accept hg as a parameter
Updated Repo class to accept hg as a parameter

Repo command now accepts a plumbum command object as a parameter - this
way the same class can be used for both local and remote repositories
fairly transparently.
Also made the remote parameter optional and added assertions to all the
functions that require it.

obmarg/synchg