add python checkstyle tool to science

code lives in {src,tests}/python/twitter/checkstyle
checkstyle plugins live in src/python/twitter/checkstyle/plugins and are dynamically loaded (but can be toggled with the -p option)

there are four binary targets provided:
  src/python/twitter/checkstyle:check => checker with all checks linked in
  src/python/twitter/checkstyle:check_pep8 => checker with only pep8 checks linked in
  src/python/twitter/checkstyle:check_pyflakes => checker with only pyflakes checks linked in
  src/python/twitter/checkstyle:check_twitter => checker with only twitter styleguide-specific checks linked in

running:

dist/check.pex [-p PLUGIN1 [-p PLUGIN2] ...]
               [--diff=branch]
               [-s SEVERITY]
               [--strict]
               glob1 glob2 ...

  -p allows you to toggle individual auto-loaded plugins, e.g. ExceptStatements.  if -p unspecified, all are selected.
  if --diff=branch is supplied, only run checkstyle against a diff (e.g. i've been testing this code by running dist/check.pex --diff=master)  NOTE this disables glob checking.
  severity levels are COMMENT, WARNING, ERROR.  -s allows you to toggle the level at which we log nits.
  if --strict is supplied, it exits non-zero if you get any nit at WARNING or higher.
  if globs specified, zsh glob (you probably want to escape these if you're already in zsh)

RB_ID=151272

(sapling split of 73e80ba512c854135544624f2baa6d6fca4eaddf)
add more checkstyle test coverage, integrate issue taxonomy

RB_ID=152529

(sapling split of d5b887947f86a34d40c05616cb2816db64132b9d)
do not discourage single line exception classes in checkstyle

single line: pass and hierarchy checking coming in next diff

RB_ID=153609
NO-QUEUE=true

(sapling split of 088ee346232a2869e6bb698a2f75732be7f840d2)
Streamlines Python checkstyle output

RB_ID=156640
NO-QUEUE=true

(sapling split of 57a0c45cb78dd99691a903d0c9bcf648e06fa4d6)
Sets checkstyle diff branch to master if no args or branch are set

RB_ID=156749
NO-QUEUE=true

(sapling split of 71613a83c5dfcc7b2f405d69a221f3db655e51f5)
AWESOME-4695 Fix checkstyle when renaming python files

RB_ID=170611

(sapling split of 6c2832f74059eeed0313e9e9c184d4d16dfe8cb1)
rename src/python/twitter/mesos to src/python/twitter/aurora

rename src/python/twitter/mesos to src/python/twitter/aurora
 - change sandbox code
 - rename recipes
 - s/MesosClientAPI/AuroraClientAPI/
 - update thrift namespaces, straggling missed changes and entry_points
 - import reordering
 - search and replace for twitter/mesos to twitter/aurora
 - search and replace for twitter.mesos to twitter.aurora
 - rewrite BUILD files

RB_ID=175784

(sapling split of d882f27457be9f6918c4eda1d66c7e415af28eca)
Fix checkstyle errors for checkstyle.

RB_ID=195707

(sapling split of 19d8d682d5f4b6721aa26cc4fc592cc100d5f990)
Alphabetize target dependencies
This looks like a total yak shave, but it will make automating the moving of dependencies to 3rdparty/... easier.

RB_ID=285621
TBR=true

(sapling split of 3189674498304979ce21dbd2e5165593064f7984)
Add history migration script.
Fix a few twitter.checkstyle bugs.  Add setup.py project for OSS.

- Add setup.py project.  Add more docstrings + check --list
- Add noqa.  Skip camelCase names if derived from non-object superclass.
- Get CheckstylePlugin out of the business of line filtering

RB_ID=353163

(sapling split of ce4d81d9762b850ae60c82a9d933dbb803275692)
[PATCH 0018/7508] Metrics: Fix the size of the indices array.

RB_ID=145008

(sapling split of c3066d97fd1e1d551285947f73aa86aef1c3ca58)
[PATCH 0019/7508] Metrics: Refactor the Histogram interface, remove getQuantiles, introduce getQuantile.

RB_ID=145013

(sapling split of aae6a715a440981592642a6a458ac342742122b5)
[PATCH 0037/7508] Metrics: Overall cleanup (code + tests)

RB_ID=145208

(sapling split of 1029d15d4f686e97d50c5db42bd4fa8b05b3c1eb)
[PATCH 0041/7508]  Fix bug in ApproximateHistogram where querying the 0th quantile causes an exception

RB_ID=145677

(sapling split of 193c4b89fcc0b320b8a76a7fd9d307e926e501e4)
[PATCH 0069/7508]  Pants: print version and prompt to upgrade (if necessary) on failure

RB_ID=146783

(sapling split of 69c0f911236008d72033137410b93f90d71fc7de)
[PATCH 0070/7508]  Metrics: optimize getPercentile

Two main optimization has been done:
- add a flag that specify if leaves are sorted. So that if you query multiple time the histogram with multiple quantile, the first one trigger the sort and all the remaining ones are super fast. (common case with metrics.Histogram multi-gauge implementation)
- Biased the histogram to high quantiles (find biggest number first instead of smallest). It makes sense because most quantile are tail-quantile (0.99, 0.999), they are now super fast to compute.

RB_ID=146021

(sapling split of a2a5ad34a3baa123f1ce02510987a6cd02ad425c)
[PATCH 0071/7508]  Metrics: Improve algorithm to find initial buffer size and tree depth.

RB_ID=145767

(sapling split of 72101580546a16bcc354a8b958f1e6a09f73a11b)
[PATCH 0072/7508]  Fix incorrect usage of MemoryMXBean causing flat memory stats.

RB_ID=147289

(sapling split of 3613560947c0d7d476414c1672ba1db1a8df4c82)
[PATCH 0073/7508]  Support custom naming schemes for ZooKeeper groups

Added support for custom naming schemes in ZooKeeper groups that
implement the Group.NodeNameScheme interface that are passed in through
the constructor.

Added backwards compatibility in the form of Group.DefaultNamingScheme
so that existing usage does not break.

Documented changes in constructor API, the new interface, and the new
default implementation.

Added test GroupTest.testJoinCustomNamingScheme to test that the nodes
are named according to the new naming scheme and a listener is updated
regarding their presence.

Signed-off-by: jsirois <jsirois@twitter.com>

RB_ID=147279

(sapling split of 4e57bfee2995a4a7f53cac398da545a462eef635)