Introduce MorePaths.createRelativeSymlink().

Summary:
There is a number of places where we would like to construct
symlinks that use relative paths instead of absolute paths, as
absolute paths have the tendency to cause us lots of pain.

Test Plan: Unit test: MorePathsTest.
Replace usages of File.mkdir() with Java 7's Files.createDirectories().

Summary: We favour using the Java 7 APIs where possible, so switch to using them.

Test Plan: buck test --all
Clean up temp files if there is no cache result.

Summary:
We create a temp file to uncache files to. However, if we miss the cache entirely, there
is no hit in the cache at all, we leave a zero-length file in the temp directory. Let's
clean that up to avoid cluttering the disk.

Test Plan:
buck test --all
Manually inspect the tmp dir for zero-length zip files
Specify `-Dsun.zip.disableMemoryMapping=true` for Buck's own tests.

Summary:
This adds `-Dsun.zip.disableMemoryMapping=true` when Buck runs its
own tests, both via Ant and via Buck.
See the detailed comment in `DEFS` for details about why this is
necessary.
Add quickstart command to Buck.

Summary:
Adds `buck quickstart` command, which copies the template from
`src/com/facebook/buck/cli/quickstart/android` to a specified folder.

Test Plan:
Run 'buck quickstart'.
Also try various options: `--android-sdk`, `--dest-dir` (for more details see 'buck quickstart --help').
`QuickstartIntegrationTest` verifies that `buck quickstart` works as expected.
Put proguard command parameters in a file.

Summary:
This moves most of the ProGuard command-line into a file and uses ProGuard's
support for '@file' syntax to read the parameters.

Test Plan: Sandcastle builds.
Get rid of a few BashSteps.

Summary:
Doing my bit to get rid of `BashStep`s from the code base :)

Check if source directory exists, and if it does, invoke `MkDirStep` and
`CopyStep`.

Test Plan:
unit tests.
Limit a genrule's runtime environment variables to those that appear in the command string.

Summary:
We are seeing problems in the wild where we are exceeding exec's ARG_MAX limit with
genrules that have extremely long lists of environment variables. ($DEPS is the biggest
offender, and will ultimately be deleted.)

This is intended as a quick fix. The long-term fix is to interpolate the env variables
in place in the command string as we do for `$(location)` and `$(exe)`. This will also
simplify Windows support where env variables appear as `$OUT` in the `bash` argument,
but `%OUT%` in the `cmd_exe` argument. Care must be taken to escape the interpolated
variables correctly.

Admittedly, this will introduce a regression for genrules that are using environment
variables in the scripts that they run, but do not reference them in the command string.
A notice will be sent out.

Test Plan:
Sandcastle builds.

Ran `buck build fb4a messenger instagram` with this diff.
Everything built successfully, which is good, as this exercises most of the genrules in the codebase.
This is evidence that there are few, if any, genrules in fbandroid that use environment variables
that are not referenced explicitly in the command string.
Remove two more instances of garbage being left in tmp.
Option in android_binary rule to store non-english strings as assets.

Test Plan: unit tests