Refactor request processor

I've refactored the Request Processor in a way to be more readable but also extendable. You can now extend the request progress reporting capabilities with your own requirements.

The class has been split into 3 main classes, request processor, request progress management, and request progress reporting.

If you stored the original Request Processor class on your pc and compared it to the new 3 main classes you should see what's been moved where. As such,I've refactored it as cleanly and as easy to compare as I possibly could. This is also why I've left it as 3 commits so you can see the transition between them.

This refactor opens up a HUGE door for more improvements to be made later including removing the mapListenersToRequest bottleneck which all threads have to compete for.

If you needed a public method in RequestProcessor that's now been moved to one of the other classes then please talk to me for any help.

It's taken a lot of time up doing this refactor in order to improve the core request handling code and this change hopefully puts the RS codebase in a better place.