Repo now inherts from Hooked.
Metadata now owns validation, but is exposed on Repo.
For storage purposes, Commit hooks are stored as strings with the metadata,
and eval'd out when bound to their corresponding Repo methods.