Be reslient to setAbiKey not being called while we figure out why it's not being called.
Junit 4 runners support (including Suite).

Summary:
This diff modifies buck test runner in order to support test suites. Instead
of fetching all annoteated methods from test class we now use JUnitCore class
to controll the process. Code from runTestMethod from TestResult class is now
splitted between before and after handlers of RunnerListener.

Test Plan: Run ant test
Start documenting the '[test]' section

Summary: I wanted to add to the documentation for the `[test]` section in `.buckconfig`.  This starts the documentation.
Turn HttpUtil into an instantiable HttpEndpoint

Summary: Turn `HttpUtil` into `HttpEndpoint` modelling an endpoint that you repeatedly post nonsense to.
Delete intermediate files when using XZ dex compressions.
Use API 18 by default in Buck.

Summary:
API 18 is out and we will want to use some of its features very soon (provided it doesn't change
some hidden state like they always do). Bump the default SDK.
Get `buck targets` working on Windows.

Summary:
In order to get `buck targets` working, I made 4 modifications:
1. Added jython.cmd as a python intepreter on Windows (through it is rather slow, Windows user do not have to install CPython).
2. Fixed bugs in `buck.py` and now `relpath` works on Windows and POSIX.
3. Replaced some hard coded `/` with `File.separator`.
4. Fixed a bug in `buck.cmd`: now press Ctrl + Break when executing would not change current working directory.

Test Plan: Run `buck targets` in a buck project directory on Windows.
`buck clean` works on Windows.

Summary:
Now `buck clean` and `buck clean --project` works on Windows. In order to do this, I have
to close the log file before cleaning, because on Windows you can not delete a file that
is opened by the current process or another process.

Test Plan: Run `buck clean` on Windows.
JUnit before/after call flow test.

Summary:
Simple test that check whether the order of calls for
@BeforeClass @AfterClass @Before and @After is correct.
Disable ANSI color on Windows.

Summary: Windows cmd.exe does not support ANSI colors.
Therefore we temporarily disabled this feature on Windows.
In future we would like to find a way to port ANSI colors to Windows cmd.exe colors.

Test Plan: Run `buck build` on Windows and see the error messages.
Allow python location to be selected.

Summary:
Now `PATH_TO_PYTHON_INTERP` is no longer used. Path to python interpreter is loaded from `.buckconfig`.
Now `buck project` works on Windows. Before this revision python interpreter is hard-coded in Project.java.

Test Plan: Unit tests. Run `buck project` on Windows.
Bump the java api version for the testrunner module. No logical changes.

Summary: Allows us to compile code in IJ again.

Test Plan: Compile code in IJ
Skip entries to a zip that are duplicates.

Summary:
The default java ZipOutputStream complains bitterly if you add more than one entry with
the same name. Avoid that entirely by silently skipping those duplicate entries. Looking
around, this seems to be the behaviour of things like JarJarLinks, which is commonly
used for creating uber-jars.

Test Plan: buck test --all
Test for @RunWith(Parametrized.class).

Summary:
Wanted to try how Parametrized.class works with buck junit runner. It seems like
it already works pretty good so Im just adding a test for it.

Test Plan:
Run ant test
You may also try:
 * cd test/com/facebook/buck/junit/testdata/runwith/
 * buck test :ParametrizedTest
 * Check buck-out/gen/__java_test_ParametrizedTest_output__/com.example.ParametrizedTest.xml
 * Remember to rm -rf buck-out after that
Shorten paths in DEPS environment variable

Summary:
Shorten paths in DEPS environment variable (take 2)

We were running into character limits because of the number of
DEPS and directory names being long. This takes the basedir and
sticks it into another environment variable which is then reused
in DEPS. This means anyone relying on $DEPS will still get the
proper paths
Cleaned up XML generation.

Summary: Changed XML generation to use a Document object rather than String.format.

Test Plan: Run buck test with the --xml flag and ensure that the XML file is generated.
Remove some dead code in JUnitRunner.
Create an AsyncEventBus with MoreExecutors.sameThreadExecutor() for tests.

Summary:
We have seen some flakiness in the //test/com/facebook/buck/event/listener:listener
test target because we use an AsyncEventBus to power BuckEventBus. Therefore,
we need to manually "flush" the AsyncEventBus during tests to make sure events
are pumped through so they can be verified. Our current way of doing this has
made the tests messier, required a busy/wait, etc.

Rather than use a synchronous EventBus for tests and an AsyncEventBus in prod,
this diff uses an AsyncEventBus with a same-thread Executor, which seems to do
the trick. This way, we don't need to cast an EventBus to an AsyncEventBus
anywhere in our code.

This allows us to remove a bunch of code from BuckEventBus. Getters that only
exist because they are `@VisibleForTesting` are now exposed through
`test/com/facebook/buck/event/BuckEventBusFactory.java`, which is also the
class used to create instances of BuckEventBus for testing. This ensures that
the public API of BuckEventBus remains minimal.

This diff also cleans up test/com/facebook/buck/event/BUCK, as there was a unit
test (LogEventTest) that was not being executed by Buck.

Test Plan:
Ran `buck test test/com/facebook/buck/event/listener` 10x from the command line.
Did not observe any failures.
Use LogEvent instead of writing to stderr.

Test Plan:
Ran `buck test --all` and verified that
"No Android platform target specified..." appeared below
the SuperConsole output as a log event.
Added fuzzy command matching into buck.

Summary:
Buck acceepts a few commands including 'build','audit', and 'test' etc.
These commands now are allowed to be entered "fuzzily" e.g.,
'bin/buck biuld' will be interpreted to be 'bin/buck build'.

Added a StringUtil.java file which has a method to compute the levenshtein
distance. This method will be called from Command.java to map a given
fuzzy command to the closest one. However, if the given command is too
far away from the closest one, no matching will be found e.g.,
'bin/buck zzzzzzz' will not matched to any of the commands.

Test Plan:
Junit test test/com/facebook/buck/util/StringUtilTest.java is added to
test that levenshtein distance was computed correctly.

Junit test test/com/facebook/buck/cli/FuzzyCommandMatchTest.java is
added to test that fuzzy commans are mapped to the expected ones.