osd_types: add pg_pool_t cache-related fields

We add fields sufficient to specify
* many pools have a tiering relationship with pool foo
* pool foo is a tier pool for pool bar
* the tiering relationship between foo and bar is specified
  by cache_mode
* client reads and writes for pool foo should be directed to
  pools bar and baz, respectively (where probably, but not
  necessarily, baz == bar or baz == foo).

This lets us specify very sophisticated caching policies on
the server side that all clients going forward can handle
simply by directing the messages as the read_tier and write_tier
flags, and the (not-yet-implemented) redirect replies
from OSDs, specify.

Signed-off-by: Sage Weil <sage@inktank.com>
Signed-off-by: Greg Farnum <greg@inktank.com>
osd/OSDMonitor: avoid polluting pending_inc on error for 'osd pool set ...'

Signed-off-by: Sage Weil <sage@inktank.com>
mon/OSDMonitor: 'osd pool tier <add|remove> <pool> <tierpool>'

Signed-off-by: Sage Weil <sage@inktank.com>
Signed-off-by: Greg Farnum <greg@inktank.com>
mon/OSDMonitor: 'osd tier cache-mode <pool> <mode>'

Signed-off-by: Sage Weil <sage@inktank.com>
Signed-off-by: Greg Farnum <greg@inktank.com>
qa/workunits/cephtool/test.sh: test osd tier CLI

Signed-off-by: Sage Weil <sage@inktank.com>
mon/OSDMonitor: 'osd tier {set,remove}-overlay <pool> [tierpool]'

Also prevent 'osd tier remove ...' if the tierpool is the current overlay.

Signed-off-by: Sage Weil <sage@inktank.com>