Several large changes

- Add StructureMap IoC container
- Refactor plugins to separate listener class
- Add ability to manually add listeners