Fixed a major bug with instance caching by JVM.

In our design, for a given collection size, we use the same instance of
TimingTests across all methods to compute timing using
method.invoke(instance, new Object[0]).

But we noticed that our results start deviating from Beck’s as the
collection sizes grow larger.

This happens because the JVM caches the instance of TimingTests, so
later methods report lower timings, especially for larger sizes.

We fixed the problem by introducing an abstract copy() method in
TimingTests, which returns a copy of the instance, forcing the JVM to
use this copy and thereby avoid caching.

Now our results agree with Beck’s.