upstart,sysvinit: allow 'osd crush location hook' script to determine osd crush position

In some cases the location the OSD should take in the CRUSH map is not a
simple function of the host that can be encoded into ceph.conf, or it is more
convenient to do so at runtime using a simple script/hook.  For example, the
crush location may be a simple function of the hostname, or it may be
affected by the osd $id (and thus what device
/var/lib/ceph/ceph-osd/$id lives on).

Allow the admin to set a simple hook that will generate a list of key/ value
pairs.  Pass in the cluster name and osd id.  Include the daemon type to
futureproof against possibly using the same hook to determine client or mds
locations (e.g., to inform objecter selection of the closest read replica).

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