Major restructuring of ObjectPool

Now have a pool for each output, using a common "notify" method to wake
up component each time something changes and it might be able to do
something.