RegexPrivateState Constructors/Assignment Operators

As RegexPrivateState is intended as a base class, deleted its copy/move constructors and assignment operators.

Also defaulted its default constructor to ensure that it is properly compiler provided.
RegexEngine Constructors/Assignment Operators

As RegexEngine is intended as a base class, deleted its copy/move constructors and assignment operators.
RegexState::Imbue Fix

The RegexState::Imbue method contained a typo/logic error.  Rather than creating a new T (i.e. the private state type derived from RegexPrivateState which the calling RegexPatternElement uses) it was attempting to create a new RegexPrivateState.

This caused compile time errors since RegexPrivateState does not have constructors which take arguments, and yet RegexState::Imbue attempts to forward arguments through to a constructor.

Had it not caused compile time errors, it would've caused runtime errors (i.e. undefined behaviour) since a reference to a RegexPrivateState would be cast to a reference to whatever derived class the calling RegexPatternElement was attempting to create an instance of.
RegexEngine Backtracking Fix

Fixed a bug within the RegexEngine class which caused an infinite loop during backtracking.

During backtracking, the engine walks backwards through the RegexState objects of the RegexPatternElements that have already matched.  For each RegexState it rewinds the engine and checks to see if the RegexState reports that its associated RegexPatternElement can backtrack -- i.e. could possibly match something other than what it has already matched.  If it can backtrack, the engine is restarted from that point with the RegexState intact (since the RegexState contains the RegexPrivateState which contains vital backtracking information).  Otherwise the RegexState is deleted and the engine continues backwards.

The bug-in-question caused the engine to immediately create a new, fresh RegexState when it resumed from backtracking, meaning that the RegexPatternElement which was being invoked to match a different substring would instead match the same substring it matched the first time, leading to an infinite loop as the engine matched the same, failing substring over and over with an ever-growing collection of RegexStates.

The fix was to cause the engine to skip the creation of a fresh state immediately after backtracking.