Preliminary version of JoinMatcher
JoinMatcher: some modifications

Matching not written etc.
JoiningRuleBuilder: implement min(), max(), times()
Modify Join{ed,ing}RuleBuilder

Make JoinedRuleBuilder accept a BaseParser as an argument so that it can use its
.toRule().
JoiningRuleBuilder: add .range() method

Takes a Guava Range as an argument. Sanity tests. But not tested yet...
More code for JoiningRuleBuilder, and start tests
Change yet more join code...

One day I'll decide on class names etc! One day...
Make JoinMatcher abstract, specialize cases

There are quite a few of them!
Add class tests for generated JoinMatchers
Implement MatcherVisitors for JoinMatchers

Still sooo much to do :/

This FollowMatchersVisitor still eludes me
FollowMatchersVisitor: don't attempt to collect following matchers...

Which means, in match() implementations, we won't need to context.setIntTag() or
anything.

A SequenceMatcher will basically try and collect all of its matchers until one
cannot match an empty sequence; it can work for it, but it cannot work for a
JoinMatcher, nor can it, for that matter, for a {Zero,One}OrMoreMatcher (they
always return false here).

The difference is those two collect their submatchers; JoinMatcher won't. This
is because JoinMatcher is potentially unbounded!
JoinMatcher: remove useless method

As a result of the previous commit...
JoinMatchers: code the match() methods... Untested...

And still the FollowMatcherVisitor stuff left unsolved :/
BaseParser: two minor changes
JoinMatcher: looks like it works! Sort of...

Had to implement .accept() (duh). However the Join rule does not appear in the
parse tree...
Document JoinMatcher; create JoinParser