Make ByteProg to contain bytecode directly (as var-size array).
Consistently apply "const" qualifier.
Support non-greedy operators *?, +?.
Implement basic support for non-anchored searching.

This is implemented in the same vein as was originally in re1 - by prefixing
regexp with implicit ".*?" (except that this prefix is not captured as top-level
match position). This is rather inefficient, and further optimizations should be
rather implemented (like, if pattern to search starts with literal character,
memchr() for it first).