basic setup for libs and test suite

This sets up the libs, makes sure they can be required in appropriately,
and sets up the test suite.

I'm putting all this in its own commit to keep the upcoming commits
clean of this boilerplate stuff.