Command Interface

This isn't ready for merge yet, PRing for code review/comments.
this type of initialization in Go tends to be error prone, because every accessible function will have to call this. (e.g. `Sub` uses `subcommands` but doesn't check for nil, etc. Either:

- I _think_ `subcommands` will have a valid map when command is constructed, since it's an embedded map, not a ptr. (@whyrusleeping correct me pls)
- or maybe just construct commands with a `func New(...) *Command`