Add XML output for code coverage.

Summary:
Emma can generate any combination of html, xml,
and text output.

If we want to parse coverage data at some point, it
might be useful to include the xml output.

Test Plan:
Updated the existing unit test; ran manually and
verified that the xml file was created and contained
sane data.
bin/buck should only invoke `git` if a `.git` directory is present.

Test Plan: Manual testing.
Added 'annotation_process_only" option

Summary:
Task #2348896 requires separating the annotation processing
step from the rest of the build.  This adds that capability
to buck.

The javac compiler supports a '-proc:only' option that will
process annotations without generating .class files.  Using
'annotation_process_only=True' in BUCK adds that option.

Test Plan: - unit test modified to try it
Create an FAQ for Buck.

Summary:
Initial questions for the FAQ:

  Why doesn't Buck support Windows?
  Why is Buck built with Ant instead of Buck?

I thought we should openly address some of the "Cons" listed on:
https://gerrit.googlesource.com/gerrit/+/57a4d597cd1111ebabf9bbf495ecd45324e7acdd
Remove EchoCommand from JavaBinaryRule.

Summary: I don't think we should announce that a JAR was built by default.

Test Plan: Sandcastle builds.
Add links to "Discussion Group" and "Report a Bug".

Test Plan: http://localhost:9811/
Documented shorthands for build targets from the command-line.

Test Plan: http://localhost:9811/concept/build_target.html
Document how to tell Buck where the Android SDK/NDK are.

Test Plan: http://localhost:9811/setup/install.html
The Android SDK should not be required when building a pure Java project.

Summary:
Instead of throwing `NoAndroidSdkException` as part of the
buildup to create an `ExecutionContext`, only throw
`NoAndroidSdkException` when `ExecutionContext.getAndroidPlatformTarget()` is
invoked and the Android SDK has not been specified by the user.
This way, a `Build` can create an `ExecutionContext` and run its course
without the creation of an `AndroidPlatformTarget` as a requirement.
This will make it easier to use Buck for a non-Android Java project.

Also changed `NoAndroidSdkException` to be an unchecked exception,
as it is not recoverable. This helps eliminate a number of catch blocks
in the code.

See https://github.com/facebook/buck/issues/7.

Test Plan:
As follows:
    unset ANDROID_HOME
    unset ANDROID_SDK
    rm -rf local.properties
    buck build buck
Avoid an NPE when a java library does not have an output

Summary: Running "buck test --all --code-coverage" currently throws an NPE in fbandroid. Fix that.

Test Plan:
buck test --all
cd ~/src/fbandroid
buck test --all --code-coverage
Observe no NPE being thrown. Rejoice.
Start moving classes into logical packages. Starting with an IO package, as that is pretty low in the stack.

Summary: We currently group all classes by which interface they implement. We should think about grouping by logical area. This change introduces an IO package. Although lots of the commands are implemented using shell commands, these seem like good canidate IO commands.

Test Plan:
buck test --all
Manual inspection of results to ensure that the moved tests are included.
Parse build files with Jython to avoid shelling out to Python

Summary: Modify BuildFileToJsonParser to use Jython via JSR-223 rather than creating a new process to parse each python build file. Cuts build file parsing time roughly in half and avoids buck depending on the system python.

Test Plan: ant clean compile test && buck clean && buck build buck && buck test --all
Fixes https://github.com/facebook/buck/issues/14

Test Plan: Tried bug in repro, verified error message was better
Display "Fork me on GitHub" on every page, not just the home page.

Test Plan: http://localhost:9811/
Push buck into headless mode.

Summary:
With the change to use jython, _something_ is causing AWT to be initialized. This is causing buck to appear as an AWT app, with its own menu bar in OS X. Stop that by indicating that we're headless.

Note: this will cause problems if we ever do anything using AWT, so we might want this to be an option in a later diff. Having said that: who uses the AWT these days?

Test Plan:
buck build buck
Watch as nothing untoward happens