Major design change of framework objects.

A key issue for this change was that TestTiming object was not
cohesive.  TestTiming object had three attributes, but two of them —
Size and Name — always appeared together, but the third — Timing — sort
of stood apart.  Size and Name were used in most instance methods,
whereas Timing was used in only one or two methods.  This indicated
that Timing should be a method parameter rather than an instance
variable.

To solve this problem, I eliminated TestTiming object and replaced it
with TestInstance object, which has just Size and Name attributes.
TestInstance export methods take Format and Timing as parameters.  By
segregating Timing from Size and Name, TestInstance is now very
cohesive.

A big problem was who (as well as how) should create TestInstance.
After much thought, I finally saw that TestInstance and TimingTest are
sort of parallel objects — sort of thing where you can use a conversion
constructor to convert TimingTest to TestInstance.  Both take the same
constructor parameters — Method and TimingTests — but TestInstance
stores Size and Name, whereas TimingTest uses the exact parameters
passed to its constructor.  Since TimingTests creates TimingTests, I
made TimingTests also create TestInstance.

Because of this design change, some method signatures in Report,
TimingTest have slightly changed.  Also, Report now stores the timings
in a HashMap.

In addition to the above design change, there are a few other changes,
starting with method and class names:

1. TestCalibration has been renamed TestRun;
2. CollectionTimer.testsInstance() has been renamed tests();
3. Order enum has been moved to the framework package.