ENH: checklist.py now enforces a minimal API in tests

~~**Not ready for merge**~~
**Tests are supposed to fail**

As we near an Alpha release, we should probably pay more attention to API details. This pull request adds the ability for `checklist.py` to parse the package, build a list of imports, and identify the shortest API target. It then ensures that all test code imports from the shortest possible API target. This means that our tests will fail if we change the API vs failing if we change our internal structure. Tests will also fail if the public API doesn't work for whatever reason.

To see what this looks like, check the failure in the Travis build. We probably don't want to merge this until we have finished re factoring things. Also this code is using python's own parsing library (it's complicated!), so we may not want to use this at all for that reason.
I see here and in other places that you renamed some modules to be preceded by an underscore. What's the motivation to do this?