Refactoring the Server (mostly)

The commits in this PR should be purely refactoring, with no changes to the actual functionality that a user would seed. With this in mind, I have not updated the CHANGELOG.

The majority of the commits refactoring the Server involved:
* extracting code out of the Server and into the appropriate class
* pushing the Server start and wait code into the Server
* adding delegate methods to the Manager(and other classes) to allow the Server to avoid knowing more details (This reduces [LawOfDemeter](https://en.wikipedia.org/wiki/Law_of_Demeter) violations in the Server)
* cleaning style based on Rubocop advice
* removing unused code and variables

There are also a few non-Server clean ups:
* extracting search into is own class
* updating Manager to use Notifier

Fingers crossed this will improve our Code Climate score, as well as making the code easier to maintain. :)