Phoenix 180

First revision for review.  There are some open points here.  Still no test case added to consume the stats.  Will do the performance test once the system is available with me.
I wouldn't assume that only the size changing means it's different. Just compare the hash code in the equals check and add a hashCode member variable that gets set at construction time.

Also, I'm not sure we need a Map - take a look and see if you can get away with just a List<byte[]> where they're ordered. See my comments in ParallelIterators - I believe well basically just use all of them, all the time.