Limit complexity explosion during determinization

Background:
When a regex is compiled to a DFA its actually compiled to an NFA and then
determinized.  In the worst case the process of determinization produces a
DFA that is exponentially (like 2^n not n^2) bigger than the NFA.  And the
NFA is proportional in size to the complexity of the regex.

The fix:
Create a new parameter call maxDeterminizedStates and send it to the regex
compiler as the maximum number of states to allow the determinized DFA have.
If the DFA has more than that many states we throw and error back to the
user.

The gory details:
This isn't supported in the version of Lucene that we use so we had to
backport it from trunk.  It'll be in 4.10.3 and 5.0.  All the XClasses are
backports from Lucene.

Change-Id: Ieba3c611405f654e8620bf49b03257aea5df1f9d