Hardware unit test

@icbat Here's that metaclassing I told you about. :) Lemme know what you think.

<!---
@huboard:{"order":1.5,"milestone_order":16,"custom_state":""}
-->

Once there is a sufficient number of unit tests, they start to actually take time, and that's when you'll want these. (speaking from having a 2.5 minute build of just unit tests)