clarify organization of shared_pool:
  change static members of pool to non-static members of impl
  remove unnecessary locking around most shared_ptr<> usage
  use more C++11