Support 'expected_num_objects' parameter when creating pool for pg folder splitting

This patch adds a new parameter for pool creation named 'expected_num_objects', to give user a choice to specify the number of objects he/she would like to put into the pool. This information is used to pre-hash PG's namespace by creating a certain number of folders, so as to avoid run-time folder splitting which could saturate disk I/O.

Testing - Test against various combinations of PG number and object number. Use rados bench to put/get objects into the pool pre-hashed.

Signed-off-by: Guang Yang (yguang@yahoo-inc.com)
Thanks @athanatos .

The implementation followed the transaction 'OP_MKCOLL' which creates a directory and set xattr, it is pretty much like what this new transaction does, the new transaction creates a couple of folders and set xattrs. So that the idempotent can be achieved by : 1) journal replay, 2) ignore -EEXIT when doing replay.

One different between this and collection merge/split is that, the collection merge/split is triggered by a OP_WRITE/DELETE so that the journal replay might not be sufficient?