Changed property equality semantics

Instead of relying on Java's definition of equality, this commit changes so that we
compare the values. (long)8, (int)8, (short)8, (byte)8, (double)8.0 and (float)8.0 are
all equal.

This is probably not the end state for these comparisons. The aim right now is
semantically correct. We'll get to do the little tricks that are needed to make this
fast.
Changes index provider implementations to follow property equality rules
Compacted the Lucene encoding of arrays