Override aapt in `AndroidPlatformTarget` instead of steps that invoke aapt.

Summary:
Basically override globally instead of finding all invocations of aapt.
This basically reverts D1311842
("Provide an option in .buckconfig to override Android SDK aapt.")
and passes the overridden aapt property to AndroidPlatformTarget.

Test Plan: buck test --all
Look for aapt in platform specific directories.

Summary:
The buckconfig value should point to a directory that contains the aapt
binaries in platform specific sub-directories (linux/mac/windows).

Test Plan:
In fbandroid:
$ mkdir -p aapt/linux
$ ln -s /home/natthu/devtools/aosp/out/host/linux-x86/bin/aapt aapt/linux/aapt

Edit .buckconfig tools section
```
[tools]
    proguard = proguard/proguard-fork.jar
    aapt = aapt
```

$ buck build instagram

Inspect chrome trace and verify overridden aapt is used.
Add support for sending input to a ShellStep

Summary:
Some shell steps can execute commands which expect some input via
stdin, which was currently supported in the ##ShellStep## class.
This diff adds a ##getStdin## method to this abstract class that
returns an optional string.  By default, this is absent, but the
developer can override this method to write stdin into the shell
command.

Test Plan: - ant test
import setuptools-3.6 into third-party

Summary: This is needed for PEX support.  The listed license is PSF or ZPL.

Test Plan: built PEX files
Import pex code from twitter-commons into third-party

Summary: This is needed for PEX support.  The listed license is Apache 2.0.

Test Plan: built PEX files
Python binaries build PEXs

Summary:
Previously python binary and library rules just served to setup
an in-repo environment where the python binary could be executed
by other rules.  This diff refactors these rules to use twitter's
PEX builder to build self-contained python executables which can
be shipped and run outside of the repo they were built in.

Most of the work is delegated to a ##pex.py## script added in this
diff, which uses some additional third-party libs added in other
diffs (pex library code, setuptools.pkg_resources) to customize
the PEX builder to our setup, which mostly involes adding python
source names passed via stdin to into the PEX.

Currently, this support is simple: we just support building pure
python PEXs via the existing python library/binary UI, but we'll
likely want soon extend this to support native libraries, reosurces,
and perhaps some form of PEX's internal support for grabbing
third-party packages.

Test Plan:
- Included tests
- Built and ran several python binary rules in fbandroid repo
Revert "Revert "Generate Xcode workspaces and schemes in the same directory as the BUCK file."".

Summary: This is a revert of a revert (e9cbd78). I confirmed the diff
worked fine in fbobjc and didn't cause any changes in generated
projects.

Test Plan: [grp] Test generating workspaces and schemes, confirm they are generated in the right directory.
[beng] Run ./Tools/buck-project.py in fbobjc, confirm no changes.
[easy] Remove references to `genfile()` in javadocs.

Summary: Prefer source paths instead.

Test Plan: None, only changed javadocs.
Add support for user home in cache directory name

Summary:
Make it possible to provide the following cache directory name
in .buckconfig file:

  dir = ~/.gerritcodereview/buck-cache

This allows to share the same Buck cache directory for multiple
source trees.

Closes #120

Test Plan: unit tests
Fix checkstyle errors.

Test Plan: ant lint
[buck4ios] Generate hmap files for public headers of ios libraries

Summary:
[buck4ios] Generate hmap files for public headers of ios libraries

Generate header map files TargetName-public-headers.hmap in the generated .xcodeproj directories of ios library rules.

The mapping sends each TargetName/File.h to Path/From/RepoRoot/File.h .

Test Plan:
included unit test

buck project //Libraries/FBProvider:project
java -jar ~/git/buck/buck-out/gen/src/com/facebook/buck/apple/clang/hmaptool.jar Libraries/FBProvider/FBProvider.xcodeproj/FBProvider-public-headers.hmap
Require tilde expansion in home cache dirs to start with ~/

Summary:
In the shell, expansions like "~jacko/foo" are valid. Avoid expanding that into
"/home/natthujacko/foo" by requiring the "~/" prefix.

Fixes #119, Fixes #120

Test Plan:
Try to set a "~jacko" cache path and confirm that buck doesn't
expand it (and therefore fails with an error).
Close the HTTP connection in the callable

Summary: Ensure that we eventually call `disconnect()` on the `java.net.HttpURLConnection` in the callable.

Test Plan: buildbot
Fix --filter documentation

Summary:
You used to be able to list filters multiple times with the filter option:

  $ buck test --filter a b c

That changed in {D1196948}, so now you have to do this instead:

  $ buck test --filter a -filter b --filter c

This diff updates the help test to reflect that change.

Test Plan: Run `buck test --help`.
Cleanup deleted function argument from the javadoc.

Test Plan: None.
pex.py: run using the python set in the PATH

Summary:
Some setups install newer versions of python in non-standard
locations and set PATH to use it.  Make the pex.py script respect
that.

Test Plan: Built instagram
Avoid running autodeps when the build has no failures.

Summary:
Crawling for src_roots can take a long time (especially on Mac, it seems), so
make sure we don't run any autodeps functionality on a successful build. Before
we were still running it, even though it had no output.

Test Plan:
Set breakpoints in the autodeps code and confirm it no longer gets
hit on a successful build.
Fix a style nit.

Summary: Checking for empty should use `isEmpty()` instead of doing math.

Test Plan: Set breakpoints and make sure this condition still gets hit.
Add `MorePaths.expandHomeDir`.

Summary:
This replaces a lot of duplicated logic in `BuckConfig` and `BuckConfigTest`.

In the process of refactoring this, I "fixed" a unit test, which turned it into
a failing unit tests. Turns out there are probably a couple old unit tests we
want to delete, which I'm doing as part of this diff to avoid pushing to master
with test failures. The problem is that we used to prune absolute paths from
`getIgnoredPaths`, but when we stopped doing this the tests were left in, and
they kept passing because they were incorrectly looking for Strings in a set of
Paths.

Fixes #119, Fixes #120

Test Plan: New unit tests.