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).
Added noexcept macro for visual studio's sake