Command Interface

This isn't ready for merge yet, PRing for code review/comments.
- `f -> function` (meaningful var name at object level)
- make a type for the function
- comments on exported symbols (golint)

```Go
// Function is the type of function that Commands use. 
// It reads from the Request, and writes results to the Response.
type Function func(*Request, *Response)

// Command is a runnable command, with input arguments and options (flags).
// It can also have subcommands, to group units of work into sets.
type Command struct {
	Help        string
	Options     []Option

	function    Function
	subcommands map[string]*Command
}
```