Add in logging of rule information.
Introduce buck.py server mode (parse perf pt2)

Summary:
Added a --server flag for buck.py which allows it to accept BUCK files to parse
on stdin so that multiple invocations of the script are not necessary to parse
a series of BUCK files.  In this mode, buck.py's output is also better structured
so that each individual BUCK file can be correlated with the list of rules
produced.

This doesn't actually improve parse time because Jython wasn't paying a
significant penalty per invocation of buck.py as its currently being used.  If
a python interpreter were to be used, however, the parse time step should
be 5x faster with this.

Test Plan: Smoke test building buck
Introduce keystore() rule.

Summary:
In a follow-up diff, `android_binary()`'s `keystore_properties` argument
will be removed in favor of a `keystore` argument whose value is a
`keystore()` rule.
Create events to track artifact cache fetches and stores.
Add hostname to logger.
Log additional information about the local configuration.
Measure time spent connecting to the distributed cache.
Introduce a new build rule, keystore(), that is required for an android_binary().

Summary:
The existing keystore_properties argument to android_binary() is a bad abstraction.

First, it requires the keystore.properties file to be in the same BUCK package as
the android_binary() rule that uses it. This makes it inconvenient to reuse the
same keystore in a single repository.

If the keystore referenced by the properties file changes, it will not trigger a
rebuild, as it is implemented today.

By creating a keystore() build rule that must specify the file where the key is
stored as well as the file that defines the other key properties, changes to
either file will trigger a rebuild for an android_binary that depends on the
keystore(). Further, the same keystore() can be accessed cleanly from any
android_binary() in the repository.

Note that although we could eliminate the properties file altogether and require
all data to be specified in the build rule definition, that would not
play well with continuous integration systems that want to overwrite a debug key
with a secret production key before building, as that would require such systems
to parse, edit, and regenerate the build file with the keystore() rule. Under
this design, the CI system only has to overwrite the keystore and keystore.properties
files.
Avoid a NumberFormatException when recreating non-idempotent RuleKeys.

Summary:
Currently if there is a non-idempotent rule written to disk (for example, a dependency of
a java_library) then builds will fail with a NumberFormatException. Avoid the NFE and allow
the build to continue.

Test Plan: buck test --all