Refactor the python checkstyle plugin system.
Review Request #3061 - Created Oct. 30, 2015 and submitted
Now instead of the plugins knowing about their corresponding subsystems, the subsystems know about (and create) the plugins. This allows us to only import (and therefore parse and interpret) code we're actually going to use. Performance profiles show that almost a second of startup time is spent just loading backends, and checkstyle was a good chunk of that. If we like how this works, we can contemplate something similar for backend code in general. Right now we load huge amounts of code even if we never invoke it. This change also creates some useful unittest infrastructure for testing these checkstyle plugins. As a result it switches all the relevant tests to use our idiomatic style (self.assertTrue instead of assert keyword, and so on).
CI passes: https://travis-ci.org/pantsbuild/pants/builds/88461495
Address code review comment.