Re-enable native lib caching.
Use fully-qualified names for libraries in IntelliJ configs.

Summary:
We used to do something cute where the library name would be
close to the JAR file name, which is what a human would probably do.
Unfortunately, we are starting to have situations where we have
generated JAR files with the same names in different directories,
so we were getting collisions for IntelliJ library names.

This changes things so that we do something canonical and boring,
but at least it avoids the possibility of a collision.

Test Plan:
Inspected generated IntelliJ project.
Had to update unit tests as I would expect.
Tolerate resources with spaces in their names.

Summary: Apparently Node has some of these.

Test Plan:
Update ShBinaryRuleIntegrationTest so it has a resource with spaces
in its name. Verify that the test fails without this diff and is
then fixed by it.
Reimplement MkdirStep to remove denpendency to ShellStep.

Summary: In order to support Windows, all filesystem steps should be platform independent.
Therefore I implemented MkdirStep with java.io.File instead of running command "mkdir -p".

Test Plan: Existing unit tests
Normalize path separators.

Summary: Implemented a class to determine operating system and do path separator
normalization on Windows. Fixed checking paths on BuildTarget.

Test Plan: Existing Unit tests
Migrate buck and buck_common to Windows batch.

Summary: bin/buck is written in bash and not compatible with Windows.
In order to get it working, I translated the minimal part of bin/buck into bin/buck.cmd.

Test Plan: Run bin\buck.cmd -V on Windows.
Create an event for logging strings.

Test Plan: Unit Tests
Create a wrapper for PrintStreams that keeps track of whether or not they've been written to.

Summary:
Part one of status console.  We need this wrapper so we can kill screen updates if someone
else writes to stdout or stderr.  This gives us a way to implement this without an all
or nothing approach.

Test Plan:
Unit Tests,
Ran "buck build", verified output still worked, verified super console stopping rendering when
someone else printed to the console.
Only parse the default include_defs once.  This saves over half of our parse time.
Add subtle color to ansi and clear controls.

Summary:
SuperConsole needs fancier Ansi support.

Test Plan: Invoked new methods in super console diff, verified lines were cleared and subtle colors worked.
Fix test in eventsArePair().

Summary: Eclipse flagged this as a waring, FYI.

Test Plan: Sandcastle builds.
Use superclass method instead of storing field.

Test Plan: Sandcastle builds.
Change buck_base_path to buck.base_path.

Summary:
Ultimately, all properties that are not defined as part of
a build rule should be prefixed using "buck.".

Test Plan: Sandcastle builds.
Introduce MoreStrings.capitalize().

Test Plan:
Created unit test.
Sandcastle builds.
Fix a bug in Genrule: order of srcs matters.

Summary:
The order of `this.srcs` matters because it affects
the creation of the `$SRCS` environment variable when
executing the genrule. Users should be able to depend
on this order.

Test Plan: Sandcastle builds.
Fix style problems.
Compile buck files over ant class files when using IJ

Summary:
It's nice to be able to flip between a command line and IJ build without multiple compilations. This
change now mirrors the behaviour of Eclipse in IntelliJ.

Test Plan:
* rm -rf build && ant test
* Once tests are complete, flip to IJ and run a test.
* Watch as IJ doesn't do any compilation, but scans the path and runs a test.
Attach the source files for junit to the IJ project config.

Summary:
It's useful to delve into the source of third party libraries such as junit sometimes.
Make this possible.

Test Plan: Open a class from junit. See the source code. Revel.
Fix style of Paths.normalizePathSeparator and add unit tests.

Summary: Also fixed two missing "@Test" annotations.

Test Plan: PathsTest.testNormalizePathSeparator
Synchronize all printing to the DirtyPrintStreamDecorator to prevent interlacing of output.

Test Plan: Unit tests