Add constructors, remove use of individual width/height params.
Add THREADSAFE argument to object_pool_t template.

When set to true, uses std::mutex as its locking construct. Otherwise,
it uses an internal dummylock_t that has no-ops for both lock() and
unlock().
Remove object_pool_t::reserve_with

These were essentially just recreating what reserve(...) already did,
except they were unstable and not always guaranteed to work. Since
reserve works with any arguments, it should match any needed ctor for
the object type.

As such, reserve_with was useless.