Implement molecular lookahead

Molecular (non-atomic) lookahead is expressed as "(?*...)", where, as opposed to an atomic lookahead "(?=...)", the engine is allowed to backtrack into the molecular lookahead like any normal group "(...)", except that like a lookahead, outside it does not move forward.

To do: Make it only optionally enabled.