#1015 Bot Master class

This seems like a huge commit, but everything is related to the BotMaster class.

* Finalized all `BotMaster` prototype functions
* Added plenty of tests
* Normalized hashes passed to all composite objects (bots, sub-bots, contet-services, sub-content-services) so that the Bot Master can efficiently track and search for bots.
* Source model (instead of Source controller) now emits a process-level event whenever a source is saved/removed to/from the database. `BotMaster` listens to it to track its bots.