OUT/Repo: expose the VCS dirty property at the Repo level

Signed-off-by: Gregory M. Turner <gmt@be-evil.net>
OUT/Repo: improve dirty checking

Signed-off-by: Gregory M. Turner <gmt@be-evil.net>
Refuse to run init-upstream-tracking on dirty repos.

Signed-off-by: Gregory M. Turner <gmt@be-evil.net>
OUT/Rules: Begin implementing RulesEngine

The RulesEngine is responsible for loading all the rules files
applicable to a given repository and mapping rules on to targets.  Here
we begin implementing construction which will involve loading the
relevant parsers from version control.  For a start we do this from git
(the repo rules).