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

Signed-off-by: Dan Mick <dan.mick@inktank.com>
Add C and C++ interfaces to mon_command, osd_command, pg_command

Signed-off-by: Dan Mick <dan.mick@inktank.com>
rados.py: functions for new librados functions {mon,osd,pg}_command

Signed-off-by: Dan Mick <dan.mick@inktank.com>
Rename "ceph" tool to "ceph-legacy-cli"

Conflicts:
	src/Makefile.am

Signed-off-by: Dan Mick <dan.mick@inktank.com>
Formatter: add new_formatter(type)

Signed-off-by: Dan Mick <dan.mick@inktank.com>
Formatter: fix XML parsing assert

Signed-off-by: Dan Mick <dan.mick@inktank.com>
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.

Signed-off-by: Dan Mick <dan.mick@inktank.com>
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.

Signed-off-by: Dan Mick <dan.mick@inktank.com>
Enhance cephtool tests for coverage of CLI rewrite

Signed-off-by: Dan Mick <dan.mick@inktank.com>
wip: osd tell commands, CephFileparse, etc.