Store cell text attribute pointers during initialization.

This will be used later when re-ordering rows.

Change-Id: I47504b49be11174b0002b1af1cbce9b8b7f2531c
Have CellValues handle text attribute values as well.

To ensure that the cell and cell text attribute storage stay in sync at all
times.

Change-Id: I5ea3fb7601f42f22af30f4f2d96d9d5e481e0853
Avoid using SwapRow() when sorting.

Instead, build a data table prior to sorting, swap rows in this data table
as we sort, then transfer the results back to the document in one step.  This
significantly speeds up the sort performance.

Formula cells are yet to be handled. I'll work on that next.

Change-Id: I59bde1a243dc8940411d1a33eef147671b060cd0