Iterate toward more formal query parsing.

This is mostly an attempt to make it easier (for me) to read and
identify everything which needs to be covered in any further
refactoring.

There is one funcational difference:  'c' is no longer an acceptable
constant. I was vaguely bothered that it was the only one with units,
anyway and once it made the parsing of 'cos' turn ugly, I just ripped
it out.

Also added a test for an identifiable regression from a former code
comment.
Reconsider how precision is done.

We want the precision to be just like our input, except when there are
hidden factors in the functions which will cause us to want much more.

Because of how we do this (via `eval`) the func list is almost certainly
wrong. Precisely defining our input is (still) yet to come.

Added some tests to show how we handle very small floats and other
related issues, plus a recommended test from an early issue comment
which I somehow missed.