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.
Gotcha, though there's nothing that would prevent someone from changing all the occurrences of an import such that checklist.py wouldn't fail and then an API regression problem would be introduced. That being said I cannot think of a good name.