I've extracted this logic into a resource now which uses `newSingleTheadExecutor` to run the server. The shutdown process has also been cleaned up.

I've refactored the CrawljaxServer to be more reusable and made a new class for the main method which seems like better separation of concerns.

Added a timeout rule to tests.