Object pool should only attempt to initialize after shared_ptr is created

Sometimes, types in the object pool which inherit enable_shared_from_self might need to call shared_from_this during their Initialize callback.  In order to ensure this callback functions correctly, the actual shared pointer for the object must be initialized before the object itself is initialized.