Replace Whitespace string with StringFragment

Token currently has a constructed string indicating the preceding
whitespace.  Since this is contiguous and found in the input stream,
we can just use a StringFragment.

This delivered a very nice performance increase, as we avoid allocating
a ton of strings.

The run against folly+gtest+double_conversion is now down to 1 second,
even with all the new checks that we added.  According to valgrind, the number of "instructions" has been cut by about 46%.