Character Class Overrun Fix

Fixed a bug which was -- in certain situations -- causing an overrun when matching an inverted character set.

When none of an inverted character set's pattern elements match, and it has no subtraction, it matches the next code point.  However, before incrementing the RegexEngine to consume the matched code point, no check was done to ensure that the RegexEngine was not already at the end.  Therefore it was possible for inverted character sets to increment the RegexEngine past the end.

Since RegexEngine::operator bool only checks for l==e to determine whether the RegexEngine is at the end or not, this then caused other pattern elements to believe the RegexEngine was in a dereferenceable state.
Capturing Group Backtracking Fix

Fixed a bug which made it possible for a capturing group to attempt to release a capture that it had not actually made, resulting in undefined/bizarre behaviour.