Refactor multi threaded crawler classes into seperate package

1) Moved mult threaded crawler classes and tests into 'multithreaded' sub-package
2) Add isComplete flag to executors, triggered when the scan is completed
Create an active executor monitor that will track pending executors
Complete the monitor for the crawler to shut it down

Add a monitor to the crawler to shut it down when no more active executors are created (ie, no more resources to scan).
Add better synchronization around checking/adding to set of executors
Merge branch 'feature/add-executor-monitor' into develop