Move artifact cache code to its own dir.
Split up artifact cache code.
Support multiple remote artifact caches.

If the spec is url1|url2|url3|... then
we'll ping all of them in parallel and choose the
one with the shortest ping time.
Ensure ZooKeeperMap is immutable.

The ZooKeeperMap implementation is expected to be immutable, however it
can be mutated by using Iterator.remove() on the returned entrySet(),
keySet(), and values() collections. This changes the delegate() to
return a Collections.immutableMap() instead of the current behavior
(overloading put/putAll/remove/clear).
Ensure that test runs to end.
Whitespace fixes.
Keep lines under 100 chars.
Ensure InterruptedException is handled properly

There were a few cases where InterruptedException is caught but the
interrupted status wasn't being set, and one other place where the
exception was being rethrown so setting the interrupt flag wasn't
necessary.
Merge pull request #144 from pkwarren/zkmap_immutable

Ensure ZooKeeperMap is immutable.
Merge pull request #145 from pkwarren/interrupt_fixes

Ensure InterruptedException is handled properly
Fix continuation indent.
Change pinger implementation.
Merge remote-tracking branch 'twitter/master'
Artifact cache bugfix.
Add public mailing list info and slightly better requirements / testing info.
Artifact cache tweaks.
Have multiple ping attempts.

Parameterize the pinger.
Switch pants artifact cache to gzip.

It turns out to be much faster than bzip2, with only
a small size penalty.
Up the artifact cache timeout.

Also allow all 2XX responses.
Add support for non-file build products.

Auditors: benjy