Cleanup with pattern matching, limit speculative

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.