reorganizations and cleanups to the lib code and test suite

This is a cleanup pass mainly to get the tests up to our modern
conventions.  This involves the following:

* no longer use `BaseTests`
* standard test file requires convention
* try to organize the lib and test code to where there is a unit
  test file for each lib file

Some other random changes include breaking out the manager logic
into its own file, breaking out the test helpers into their own file,
adding a `test_handler` test helper.

This is all prep for new features and changes.  I want the tests
and code to be in the best state possible before I go making
changes.