Add assertion checks to the TableReport subclasses to help catch a bug.
Fix a bug in the std::sort compare function in TableReportView.

 * The compare function is required to have strict weak ordering.  It
   currently does not have this property when isDescending is true and row1
   equals row2.  In that case, the function should return false, but it
   returns true.

 * With libc++ on OS X, this flaw in the compare function leads to accesses
   beyond the end of the container, which crashes the program.

 * Change the way isDescending is handled, so we don't negate the result at
   the end.  It should now be obvious that the function returns false when
   the two items are equal.