fastparser: avoid boost::optional where it is un-necessary.

boost::optional appears to show up rather heavily on many profiles.
We already use mnElementToken == DONTKNOW to flag / use these guys.

Change-Id: Ibf2b0167f259cc601da2fb9703e880b78e60886e
sc: re-work ScHorizontalCellIterator to try to improve performance.

Add more unit tests, reduce the number of rows that we know are empty
that we iterate over while saving by shrinking the column set that
we scan as we go along.

Change-Id: Iebd817d9a8a01fa6abeaa24c4aace92233313e0f