Overhaul error message displays

 - "pop-time": aggregation errors (e.g. two distinct values following into an
   `=` aggregator) are group by functor/arity, then by type and only 10
   instances are shown.

 - "push-time": errors are grouped by rule, then error type (e.g. TypeError,
   DivisionByZero), only 10 instances of the error are displayed.

 - These changes help avoid an overwhelming cascade of very similar
   errors. Users should be able to trace the sources of these errors using other
   tools (e.g. `trace`)

Resolve issue #36

Program rules available in $rule -- doesn't do anything yet however.

Tweaks to doctest runner.
Merge ../working
multiline input in doctest

disable REPL run command.. it doesn't pass parser state along.
Merge ../working