PJSM-207 Minion phones home

- refactor the minion code to have shared code, plus
  move around minion and dominion controllers
- implement camel @Produce/@Consume so that the minion
  and dominion can send/receive messages, respectively.
- implement a custom ShutdownListener so the minion
  will send a "Stopped" message to the dominion on
  shutdown.
- other cleanups and refactoring