Command Interface

This isn't ready for merge yet, PRing for code review/comments.
@jbenet it will not have a valid map, it will be nil if not set in a `New` function