WIP large restructuring

Better abstractions for hook, metadata, source, command.

Unified hook directory structure -- no point in having different
structure on the source and locally.
Validations for Local source
Validations on Directory and Github sources
Flesh out sources
Get commands working according to spec
TODO update
"list-all" command and some fixes