Test for bidirectional equality

If setting a timestamp transform b that is a subclass of a, the following
holds:

a.equals(b) == true
b.equals(a) == false

This is caused by the operator instanceof. Test that two objects are really
equals.

Not sure if this is the right fix for this problem. What is the best practice
to test equality among class hierarchy?

Signed-off-by: Francis Giraldeau <francis.giraldeau@gmail.com>
Overrides equals and hashcode methods

Signed-off-by: Francis Giraldeau <francis.giraldeau@gmail.com>
Add guava as dependency

We should standardize on the guava hasher for all hashCode() implementation.

Signed-off-by: Francis Giraldeau <francis.giraldeau@gmail.com>
Adding benchmark results for fast transform

Tight loop:
xform-slow: 10160 ms
xform-fast:    63 ms

xform-fast is 160x faster.

Reading benchmark (django-vote-32)

summary time
read         1726.00        41.07
readfast     1468.67         5.51

Overall speedup: 15%

Signed-off-by: Francis Giraldeau <francis.giraldeau@gmail.com>