New combinators: between, lbetween

* between(lsep, item, rsep) => sequence(skip(lsep), item, skip(rsep))
* lbetween(lsep, item, rsep) => sequence(skip(lsep), lift(item), skip(rsep))
Implement toString() on all Matchers
Compact Node.toString