Replaced FormatOptions.MaxPreEncodedLength with a much better approach

This new approach still isn't perfect, however, because it allows the
word to reach or slightly exceed the max line length before breaking
apart long words.