Regex: Implement compiler for regular expression patterns

Originally, this developer wanted to (ab)use the PikeVM with a
hand-crafted program and an added "callback" opcode to parse the regular
expressions.

However, this turned out to be completely unnecessary: there are no
ambiguities in regular expression patterns, so there is no need to do
anything else than parse the pattern, one character at a time, into a
nested expression that then knows how to write itself into a program for
the PikeVM.

While at it, we fix the preamble for find(): we implemented it initially
as (?:..*?) instead of (?:.*?) due to the lack of prioritization. But now
we have SPLIT_JMP, so we can do it correctly.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Regex: introduce debug mode

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Regex: implement ? and * operators

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Regex: Implement reluctant '?', '*' and '+'

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Regex: add support for character classes

Now we support regular expression patterns a la '[0-9]'.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
TO-UNDO: makefile target for Regex
Regex: implement non-capturing groups

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Regex: implement alternatives

Now we support regular expressions like 'A|B|C'.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
TO-UNDO: make comparing with Oracle JRE's regex easier

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
WIP: Regex: support special character classes

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
WIP: Regex: support lookahead

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
TO-UNDO: debug character classes

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>