mon: optionally specify the OSD id

From the point of view of a centralized configuration system such as
puppet, it is convenient to be able to fully describe the system to be
deployed in advance. To create an OSD it is currently necessary to:

a) OSD_ID=$(ceph osd create)
c) ceph-osd --id ${OSD_ID} --mkjournal --mkfs

ceph-deploy has both admin rights for a) and root access to the target
for b). However, a puppet master typically does not have access to the
MON or the target OSD. It prepares configuration in advance and expects
the MON and the OSD to connect to it, collect the configuration
description and act on it. It would for instance prepare the
configuration for OSD 0 with

a) ceph osd create 0
b) ceph-osd --id 0 --mkjournal --mkfs

and b) could be run by the OSD without the need for the puppetmaster to
figure out how to collect the result of a) from the MON.

An optional OSD ID string is added to OSD create. If the ID is already
taken or if the ID is not a valid OSD ID, EINVAL is returned and the
creation fails. It does not fallback to a valid value because the caller
would then be required to collect the new value and that would not be
useful for configuration management purposes.

Signed-off-by: Loic Dachary <loic@dachary.org>