Major design changes in Reporting -- see details.

Continued the clean up of the seperation between layout and formatting.
 Finally, we have a design that does a pretty clean seperation.

The previous design had come close, but Report had an Order instance
variable that was just used in 1 method — which was a bad smell.  It
turns out that Report, in addition to formatting, was also doing a lot
of the layout.

In this design, we renamed Order as Layout and moved all the layout
responsibilities from Report to Layout.  Now report does pure
formatting, and Layout, together with Test, does all layout functions.
This is a real clean seperation.  With this design, each report format
can avoid the problem of parallel class heirachies, as Layout and Test
objects do not vary by format.  Details below.

1. Report now does pure formatting;
2. Converted Order enum to Layout class;
3. Moved layout code from Report to Layout;
4. Layout and Test now together take care of all layout;
5. LayoutType, an enum, for getting instance of Layout;
6. TextReport changed to match with Report;
7. Other objects changed to be in sync with above.