Add component/component support, fixes #53

This the dependency on Eventable means that Eventable also needs component support. In component.json, I've used the `thinkerous/eventable` fork because it has component support. We can change it to `manybymany/eventable` once my pull request there is approved.