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":""}
-->

I feel like we need to add some "how to run this" in the readme. Maybe you could start w/ how to use unittest to run the tests?