squashed commits from wip-monc:

mon: set tid on MMonCommandAck

Set the tid on the reply to match the request.  This will allow a client
to have multiple commands in flight.

mon/MonClient: add mon command handling

Reimplement the ceph tool functionality to set a command to the monitor
and collect a response.

mon/MonClient: assume tid 0 is the first command

If we get an ack with no tid, we have to assume it is the first (hopefully
only) command we have in flight.  Old code doesn't properly set the tid.

osdc/Objecter: implement osd and pg commands

This is reimplementing the 'tell osd' and 'pg ...' commands in the ceph
tool in the Objecter infrastruture.  As a result we are forced to consider
all of the corner cases we have already handled for regular ops and
linger ops, so the result should be significantly more robust.
str_list: cleanup/enhancement

- move #includes to str_list.h
- remove redundant std::, add using for vector, set, list
- add get_str_vec and get_str_set-no-delims
Rename "ceph" tool to "ceph-legacy-cli"
ceph: Remove command-prompt looping (will be handled by Python)
Formatter: add new_formatter(type)
Formatter: fix XML parsing assert
ceph: make status message be debug, not default
mon: add JSON command parsing framework

Use json_spirit to read/parse JSON command input into a "cmdmap",
which is a boost::variant typechecked discriminant union.
This means that requests to read from the map must match the type
given.  Types are string, bool, int64_t, double, and vector<string>,
and that type is a "cmd_vartype"; a cmdmap is a map of name (string) to
cmd_vartype.

Also, an evolutionary deadend hack "build_fullcmd()", which reassembles
certain commands from the cmdmap back into a string for the sole reason
of running them through _allowed_command.  This is due to be replaced by
a better allow mechanism very shortly.
mon, ceph: transition to separate CLI parsing

ceph is a new Python CLI that:
1) queries the underlying cephbin to get command descriptors,
2) parses user input and validates everything possible,
3) passes validated JSON command to cephbin for handling

The frontend also presents help, and takes over the CLI command
looping mode.
Enhance cephtool tests for coverage of CLI rewrite