Fix for common pool exceptions

Many exceptions using this library occur in the Pool class. This class needs to be much more robust against multithreaded calls.
First of all to avoid ArrayIndexOutOfBoundsExceptions it is necessary to remove the first and not the last object when getting items. Next, a try/catch will avoid further exceptions when removing objects from a short collection when dealing with multiple threaded calls.