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.
Just noticed this:
The second condition is always true when the first is true, and is broader than the first condition. So I should drop the first condition, because the mad performance gainz from short circuiting are pretty pointless in this situation.