memoize `./pants path` lookups

it was dumbly not re-using previous work
memoize `pants paths`

split out path and paths implementations; they need to work
differently to each be as fast as possible
A RunInfo file.

This is a small textfile-backed data structure containing info
about a pants run, such as the timestamp, commit sha etc.

This supercedes the mostly unused BuildInfo functionality, which was
removed, to avoid confusion.

Auditors: markcc
Attempt #2 at proper multiplatform distillation for pants.pex.
Ensure an ensemble expands to a unique set of ips.
Code to track pants timings and artifact cache hits/misses.

Auditors: markcc
Fix minor bug in RunInfo.
Read-write buffers.

Allows pants to gather the stdout/stderr of running subprocesses.

Auditors: markcc
Merge pull request #138 from jsirois/jsirois/zk/ensure_unique_ips

Ensure an ensemble expands to a unique set of ips.
Use an older 10 series mactel platform for maximum compatibility.
Fixup SourceTranslator to refuse translation for anything but the current platform and python.
Turn on verbose mode for common:all tests.
Fixup Scm and its test.

Support environments like travis-ci with no proper user config:
  setup a repo identity in test
Fixup _get_remote implementation (kill quoting) and test.
Merge pull request #137 from jsirois/jsirois/open_multiplatform

Rig up multi-platform pants.pex in the open as a stop-gap
Fix cmdline attribute box in process handles.

Due to a removal of the cmdline attribute in process handles,
many pants commands fail with: AttributeError: 'ProcessHandleProcfs' object has no attribute 'cmdline'
Merge branch 'cmdline-fix'
Make python thrift default version configurable.
Merge branch 'rwbuf'
Merge branch 'cache_stats_and_timing'
Spread testing to python 2.7 and java 6.