Improve thread management

This asserts that the internal thread pool is shutdown before booting
and also tracks all threads while busy.

Use Celluloid.internal_pool for all code instead of Thread.list