Make captured content available

One may now use regex/4 to access the content captured by parentheses in
a pattern.  Because regex/4 is a strict superset of =~/2 and \~/2, those
two operators are now implemented in terms of the former.  This
simplifies the code quite a bit.  It should also make it behave more
consistently in the long run since the operators are just sugar for the
underlying, verbose predicate.

Closes #1
Refactor how we track captures

This is the first step towards supporting named captures.  It will also
give us an opportunity to improve performance for numbered captures.
Manage captures internally with a difference list

Capturing a new string used to be O(N) where N is the number of
captures.  It's now O(1).  More importantly (since I have no benchmarks)
this opens the way for handling named captures.
Better names for some capture tests
Temporarily drop support for ^ pattern

The previous implementation was faulty in many ways.  Until it's
implemented properly, it's better to throw an exception so people know
it's broken.

Once I have a good implementation ready, I'll remove 'todo' from the
tests and add the feature back into the README syntax section.
Correctly implement internal string matching

Unless the pattern uses ^ (not currently supported), a regular
expression is allowed to match anywhere inside the target string.  The
old implementation falsely gave too much leeway and allowed the regex
inside a capturing group to also match anywhere inside the string.

This change represents the "match anywhere" semantic correctly.  Namely,
the regular expression is allowed to start its match anywhere.  Once a
starting point is chosen, it must match all consecutive characters in
the target string.
Support explicit named captures

One can use named captures with regex/4.  There's one TODO test that
still needs to be implemented.  I expect that's a very rare usage so I
won't address it right away.

I also need more experience with the current captures implementation
before deciding exactly how that edge case should be handled.  It might
want a completely different approach to tracking captures internally.
More succinct definition of Perl character classes

Using set_items//1 makes the implementation more succinct and also keeps
the behavior of character classes consistent regardless how the
character class was specified.
Pass options to character class primitives

This will be used to support character classes in the presence of the i option.
Fix i option with character classes

Character classes used to be immune to the i option.  Now they're parsed
case-insensitively and matched case-insensitively.