Cleanup with pattern matching, remove some uses of speculative.

This version is 0.2 s slower on NeboOperators.h than the current master, but I think the readability from pattern matching is worth it.

Behavior changes:
- the general-body chunk no longer speculates about a single line if there is more than one chunk in the body.
- namespace-define no longer speculates about a single line.

Internal method structure / behavior changes:
- combine-lengths no longer accepts symbols or strings - just integers.
- check-speculative-line-length no longer accepts integers - just strings
- all the environment predicates from fulmar-core are gone and their uses replaced by pattern matching on the environment struct.
- transform-chunks gone
- match-lengths gone

Plenty of other changes to method implementations, but I think that's it on external behaviors.