Significant Testing Overhaul

This adds a bunch of tests around Atomic Components. We're still using QUnit, mostly because I haven't had time to swap in Venus yet for the project.

The component tests work with all the different features Components support, from verifying the basic integrity of their event model to testing the dependency injection code that is critical to being able to test end-components with dependencies.