Simplified API for defining new commands and completers

...and updated existing commands to use the new API.

Take a look at https://github.com/caskco/cdap/blob/feature/simplify-cli2/cli/src/main/java/co/cask/cdap/shell/command/get/GetStreamEventsCommand.java for an example of how to define a command.

Major changes are
1) Completers are defined in `DefaultCompleters` (separately from the commands now)
2) The argument name (i.e. stream, in `<stream>`) used in the command's pattern determines if/what completer is used
3) Arguments are mostly retrieved by name instead of having to manually parse the input
4) Only have to implement 3 methods for each command

In terms of changes that need review, you can look at
* CLIMain: https://github.com/caskco/cdap/pull/224/files#diff-2
* CommandSet: https://github.com/caskco/cdap/pull/224/files#diff-11
* Command: https://github.com/caskco/cdap/pull/224/files#diff-9
* one of the commands, since changes to commands mostly follow the same pattern - GetStreamEventsCommand: https://github.com/caskco/cdap/pull/224/files#diff-51