Factor common prefix text out of Regex alternations (#2171)
* Factor common prefix text out of Regex alternations
Given a regex like "this|that|there", we will now factor out the common prefix into a new node concatenated with the alternation, e.g. "th(?:is|at|ere)". This has a few benefits, including exposing more text to FindFirstChar if this is at the beginning of the sequence, reducing backtracking, and enabling further reduction/optimization opportunities in the alternation.
* Address PR feedback
* Update RegexBoyerMoore.cs