[WIP] Destructuring

Implements destructuring pattern matching.

    id firstIfConcatenation = [HMRCase match:combinator withCases:@[
        [HMRCase case:HMRConcatenationPredicate(HMRBind, HMREmptyPredicate) then:^(id<HMRCombinator> first) {
            return first;
        }],
    ]]

- [x] Try out `HMRConcatenationCase`, returning a `HMRCase` instance?
- [x] Repetitions
- [x] Reductions
- [x] Literals
- [x] Character sets
- [x] Null parses
- [x] Empty
- [x] Use destructuring to implement cyclic test
- [x] Use destructuring to implement nullability test

Fixes #15.