Adding another test for parser.

Test uses the code in formatter. It's failing to parse the destructuring I
think - it finds the & and chokes.

I have a feeling this will take significant work to address.
Conslidating some shared threaded code.

thread-first and thread-last have basically the same detection algorithm,
so I decided to rewrite some of the copy-pasted-and-changed code into a
function taking a specifying function. Still more to be done on that
front, but a stepping stone.
Moved all logic out of thread-first/last into aux.

The aux functions actually aren't so aux, are they now?

Disabled one test in thread_last_test concerning the rebindability of the
dynamic vars (since I actually ended up shoving them into a map, thus
breaking the test).
Added a utility function to run thread-first/last

Added function in core. This is mostly to make it easier to see what's
actually going on for me. Also added :name field to extensions
thread-first and thread-last (and then to the rest of them). :name should
be a uniquely identifying descriptive name pertaining to the function of
the extension.