Move tests alongside tested modules 

This PR moves our unit tests alongside the modules they are intended to test. This has a number of advantages:

- predictable test locations: the tests for module foo.bar are always at
  foo.bar_test
- 1:1 mapping module to test file: this helps enforce the testing of
  isolated units
- easy overview of module coverage: we can quickly and easily identify
  modules that are not tested

I'm happy to hear other opinions on this one. Consider this PR a tentative suggestion.