Major refactor, relying heavily on promises. Each module has a run method that takes care of initialising any dependencies. Each module has a process method, which takes incoming arguments and handles them appropriately. No need to send Xmpp object through each module as they now get passed only relevant information.