For class preprocessors, clean up dirs before starting.

Summary:
I was getting a failure where the symlink couldn't be created because it
already existed.  Blow these away before starting.

Test Plan: Built with a preprocessor.
Get list of targets in IntelliJ.

Summary: Get all targets by parsing stdout of running `buck targets`.
Clean built targets in IntelliJ.

Summary: Clean built targets by running `buck clean`.
Build target in IntelliJ.

Summary: Build specified target by running `buck build [target]`.
Implement a tool window on the right in IntelliJ.

Summary:
Launch the plugin and you can see a panel window on the right.
By clicking refresh you can see a list of targets fetched.
By double clicking one target, it will build.
Fix BuckRunner of IntelliJ plugin.

Summary: Should remove `process.destroy()` instead of `process.waitFor()`.

Test Plan: Build plugin.
Implement a message window that reports the build progress in IntelliJ.

Summary:
Launch the plugin, click refresh on the right panel, and double click a target.
Then you will see a message windows on the bottom reporting the build progresses.

Test Plan: See summary.
Fetch targets by running buck target --json.

Summary: We can fetch more detailed and organized data from
`buck target --json` including target type and sources required by a target.

Test Plan: Launch the plugin and click refresh on the right panel window.
Fetch targets when Buck tool window firstly shown.

Summary:
This diff involves 3 changes:
1. Fetch targets (only once) on Buck tool windows shown.
2. Decrease colspan of panel from 3 to 1.
3. Do not fetch again if targets are being fetched.

Test Plan:
Run IntelliJ with this plugin and click Buck tool window on the right.
The targets will be fetched automatically.
Fix directory separator problem in FilterResourcesStepTest.

Summary:
In `FilterResourcesStep` a regular expression is used to replace string pattern,
where `/` is matched. We need to replace `\` on Windows with `/`.

Test Plan: Unit tests.
Add @SuppressWarnings("serial") to an Exception.

Test Plan: Eliminates a warning in Eclipse.
Use java.nio.file.Files.mkdirs rather than Files.mkdirs for robustness.

Summary:
Ensure that we use Java 7's Files createDirectories command rather than File.mkdirs, even
indirectly.

This diff also removes the methods from ProjectFileSystem that are not used in buck.

Test Plan: buck test --all
Downgrade IntelliJ plugin to Java 6.

Summary:
According to http://devnet.jetbrains.com/message/5472169,
IntelliJ does not support Java 7 right now, which means you can not run IntelliJ using Java 7.
Therefore we have to downgrade the JDK version in use of IntelliJ plugin to Java 6.
But Jetty 9 (we used as Websocket client) required at least Java 7,
so the Websocket client is reimplemented with org.java-websocket.

Another fix: Start Websocket client only with `build` command.

Test Plan: Run plugin and double click a target.
Remove unused method in DalvikAwareOutputStreamHelper.

Test Plan: Sandcastle builds.
Remove unused RuleKey logic.

Test Plan: Sandcastle builds.
Compute the RuleKey with and without deps simultaneously.

Summary:
It turns out that a `Hasher` created via `Hashing.sha1()` can have
its `hash()` method invoked only once. Therefore, to compute both
RuleKeys simultaneously, this diff introduces an AppendingHasher
that makes it possible to build up the SHA1 digest for a RuleKey
without deps, get its hash, and then update the digest with the deps
info, and get its hash again.

Test Plan:
Created a comprehensive unit test, AppendingHasherTest.
The updates to AbstractCachingBuildRuleTest.java reflect the
changes to RuleKey.
Introduce ArtifactCache#isStoreSupported().

Summary:
This makes it possible to avoid creating zip files unnecessarily
when caching is disabled. This occurs frequently in unit tests,
and likely occurs often in external usage of Buck.

Test Plan: Sandcastle builds.
Update getAbiKey() and getAbiKeyForDeps() to return non-null values instead of Optional.

Test Plan: Sandcastle builds.
Modify PrebuiltJarRule so that its ABI is the hash of the binary_jar file.

Summary:
Note that when the `binary_jar` of a `prebuilt_jar` is a `genfile`,
the ABI is not guaranteed to be consistent across machines.
The end-user must be responsible for generating the JAR file in a
deterministic way to guarantee that the ABI will be reliable.

This could potentially be avoided (or at least diminished) if the
ABI were a hash of the contents of the .class files contained in the
JAR instead.

Test Plan: Sandcastle builds.
Stop output wrapping in SuperConsoleEventBusListener.

Summary:
There is an ANSI control code that lets us turn off terminal wrapping.
Use this code to stop pretty output from spewing in narrow terminals.