add some binaries for os x 10.8

compiling protobufs/thrift in a clean checkout on mountain lion would
generate errors like:

"FAILURE: Selected binary /Users/ryan/c/pants/build-support/bin/protobuf/mac/10.8/2.3.0/protoc does not exist!"

Auditors: benjy@foursquare.com
add lib/ to .gitignore

intelliJ puts some depended-on jars there

Auditors: benjy
Move MockTarget to its own library and package

In anticipation of using MockTarget in more tests.

Auditors: benjy
typos: s/Sirios/Sirois/g,s/dependants/dependents/g

Auditors: benjy
Privatize Context.add_target

Auditors: benjy
Privatize Group.create_chunks

Auditors: benjy
Add a simple test for CacheManager

Auditors: benjy
Make dev-mode pants pass on return code correctly

Auditors: benjy
Add __repr__ method to Goal and Group

Auditors: benjy
Add an "id" field to JarDependency

Auditors: benjy
pythonic False-casting

Auditors: benjy
boolean logic bug

Auditors: benjy
more descriptive name for CacheManager._validate

_sort_and_validate_targets

Auditors: benjy
Generate abbreviated names for a list of strings.

This is useful e.g. for obtaining concise, unique identifiers
for target IDs that otherwise share a lot of verbose segments
in common (e.g. shared directory structure).

Auditors: benjy
Add a doubly-linked DAG data structure

This will be useful for various parallelization-related dependency
analysis.

Auditors: benjy
Support single- and multiple-target VTS's.

Previously, each target got wrapped in a VersionedTargetSet, but we relied
on the assumption that it was alone in its set until later, when we
grouped the single versioned targets into multi-target sets for
compilation.

This makes this single- vs. multi-target VersionedTarget distinction more
explicit and allows for more complicated logic elsewhere about which
targets to group together.

Auditors: benjy
Add parallel compilation support to scala compiles

Most of the relevant logic happens in ParallelCompilationManager,
which is generic to any task type. Callers should subclass PCM and
define a method that, given what targets have been, are currently
being, and still need to be compiled, returns sets of targets to
compile next. PCM handles forking these compiles out to a
configurable number of workers.

This commit also includes:

  - a simple subclass of PCM, "NaiveParallelizer", which only
	compiles one target at a time (per worker), working its	way up from the leaves of the dependency DAG,
  - the ability for scala compiles to use this parallelization
	strategy, and
  - logic to allow parallel compiles to work with or without
	nailgun.

Auditors: benjy
Code review feedback: move test/ to testutils/

original audit: http://phabricator.prod.foursquare.com/rPANTSa968557fcc86063675ccadaf102d7cb0f8ccce10

Auditors: benjy
remove redundant condition

Auditors: benjy
code review feedback: don't rely on /tmp/ existing

Auditors: benjy