Command Interface

This isn't ready for merge yet, PRing for code review/comments.
This is only acceptable IMO if you have '--' to specify a long option vs a short, so -abc would be -a -b -c but --abc would be "abc"