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 splittings.

Issue - as we add two new fields to coll_t struct, and given its encode/decode logic, when we bump up the version number, it could break old version software. This would request to upgrade all nodes before creating new pool.

Todo - doc the behavior.

Signed-off-by: Guang Yang (yguang@yahoo-inc.com)
I would not tie the field to the implementation detail in the comment.

Adding a field to pg_pool_t does require changes to the encode(), decode(), dump(), and generate_test_instances() fields in the struct, though.  Normally that would be wrapped up in a single commit.  See the last change as an example: 931ae6b8a06e7eabc230ebee9e7bcb1402be546f