Fix CommaSequence#matches_path?

The old version would also match children of matching nodes. This
versions starts at the end, bails out as soon as not enough path to the
root is left to match the remaining selectors, and tries to be fast and
allocate as little as possible.
Assorted performance improvements

Drop Adamantium. It's nice to have a guarantee of deep immutability, but
the cost of the extra allocations it brings is too high.

Try to prevent as much type coercion from happening if inputs are
already well formed.