Use threadpools in the object server.

This way, the eventlet reactor doesn't block on disk reads, fsyncs,
et cetera.

There's still stuff that isn't threadpooled, but that can be done
later. I also pushed some stuff out of eventlet.tpool's thread pool
and into the per-device ones.

The threadpools are per-device, lazily instantiated, and have
configurable sizes. If you try hard, you could even not use them, and
then you're just paying the cost of an extra function call, not any
inter-thread stuff.

There's no plumbing for the configuration, though, so currently you
get threadpools with some hardcoded size.

Bonus: functional tests pass!