Add ALLOW_NESTED_REPEAT syntax option

Not all languages allow nested repeats (/a***/, /a{1}{1,}/, etc) in
their regular expression handling. This adds an additional Syntax
behavior to control whether nested repeats should be allowed. The
default behavior, GNU_REGEX_BV, was updated to allow nested repeats.

This also required modifying the logic that looks at the return value
of QuantifierNode.setQuantifier to update the repeat's target even
when the repeat option given was "{1}" or "{1,1}".
Add IGNORE_BACKREF_PROC_READ_NOT syntax option

Setting this enables the JavaScript behavior of ignoring any
backreferences to negative lookahead captures outside of the negative
lookahead itself.

In otherwords, in a regular expression like "(.*?)a(?!(a+)b\2c)\2(.*)"
the second backreference to "\2", outside of the ?! group, is ignored.
Move the JavaScript syntax from DynJS to Joni
Modify Analyser to respect the STRICT_CHECK_BACKREF syntax option
Add OP2_ESC_IDENTITY syntax option

JavaScript allows what it calls an identity escape, where an escaped
character falls back to just returning itself if not other escape
sequence matches.
Add OP2_UNICODE_WHITESPACE syntax option

This options treats the Unicode whitespace characters \u2028 and
\u2029 as whitespace instead of just the ascii whitespace characters.
Add ALLOW_EMPTY_CC syntax option and enabled for JavaScript

JavaScript allows empty character classes so add that as a
configurable option in joni.
Squash all the JS options to OP2_OPTION_ECMASCRIPT

This also guards against a couple of minor behavioral changes to
ensure they only happen when OP2_OPTION_ECMASCRIPT is set.