Command Interface

This isn't ready for merge yet, PRing for code review/comments.
1 is already how it works.
I don't really like 2 since `-key=val` is very close to `-key val` (which is interpreted as -k -e -y=val).