replace properties with erasure code profiles

The properties implemented in pg_pool_t are problematic because they do not belong in the pool. They do not belong in the crushmap either. And they are required to create the erasure coded pool and the associated crush ruleset. 

This patch series moves the pg_pool_t::properties to OSDMap::erasure_code_profile

The primary motivation for this change late in the release process is to provide a user experience that will not need to be changed in the next cycle. If it is not in Firefly, the command will have to change from

    osd pool create foo=bar frob=nitz

to

    osd set erasure_code_profile myprofile foo=bar frob=nitz
    osd pool create myprofile

which will be error prone and non trivial to explain. To further simplify the user experience, the erasure code ruleset required by a given pool is created implicitly if not specified. This change is implemented as part of a separate pull request https://github.com/ceph/ceph/pull/1350 . It is implemented before the change from properties to profiles because its logic is almost completely unrelated.