Replace `context.isPresent()` with `isDaemon`, as appropriate.

Summary: This will make a follow-up diff cleaner.

Test Plan: Sandcastle build.
Update `BuckEventListener.outputTrace()` to take a build id.

Summary:
This ensures that all listeners can output their own trace
with a common identifier.

Test Plan: Sandcastle builds.
Introduce `TimeSpan` class.

Summary: This makes it possible to group a duration and a `TimeUnit` in one object.

Test Plan: Unit test.
Change BinaryBuildRule.getExecutableCommand to return List of arguments instead of formatted string.

Summary: Change getExecutableCommand to return something easier for ProcessBuilder to work with.

Test Plan: buck test --all
Avoid fetching artifacts for a rule if any of its dep had a miss.

Summary:
This is desirable since a cassandra cache takes a non-trivial amount of time.
Delete remaining buck query related class.

Summary: deadcode

Test Plan: sandcastle
Allow a SourcePath to modify a DescribedRule's deps.

Summary:
A SourcePath that points to a target is implicitly a dependency of a rule.
This change examines the populated constructor arg and adds any
BuildTargetSourcePath entries as dependencies.

Test Plan: buck test --all
Allow a constructor arg parameter in a Description to be declared as a wildcarded Optional.

Summary:
This change allows users to declare fields of type "Optional<? extends SomeClass>"
and not have the ParamInfo choke on it. This makes writing tests against these
parameters a little less verbose.

This diff also reduces duplication in ParamInfo.

Test Plan: buck test --all
Allow the src attribute of an export_file to be another build target.

Summary: Allows the output of a build rule to be exported under a different name.

Test Plan: buck test --all
Introduce Closure Templates.

Summary:
I decided that I should not write any more Java code that generates
HTML, as using a template language makes a lot more sense.
(We should also consider rewriting the Python code for `buck project`
in Java now that we can template XML with Closure Templates, too.)

I spent hours today trying to serve JSPs from embedded Jetty, but was
unsuccessful. The docs here are incomplete:
https://wiki.eclipse.org/Jetty/Tutorial/Embedding_Jetty

I also tried building Mustache (https://github.com/spullara/mustache.java),
but that pulled in code for Scala and JRuby, so that seemed like it
would result in adding a bunch of stuff that has no business being on
Buck's classpath. Apache's Veclocity was a similar situation.
This pulls in a version of Closure Templates with its
Guava and Java annotation classes stripped out of it so
they do not conflict with the ones we already have on
our classpath.

This will be used for upcoming work on the buckd HTTP server.

Test Plan: Manual testing in follow-up diff.