Bring in optional libmatheval and support it in the eval() function

Using the optional GNU libmatheval, we get:

* symbolic evaluation (disabled for now)
* function differentiation (unused for now)
* parsing of infix expressions with parenthesis
* all the math goodness you expect, including standard constants and the hyperbolic inverse cosecant `acsch` (gesundheit)
* robust parser; acceptance test shows its usage
* no rounding (use `format` for that)
* fast evaluation

I left the function parameters as a type (currenly only `math`) and some options (currently only `novars`) to support future expansions; I feel strongly that leaving these parameters is very useful as our evaluation needs grow.  For instance we may need a logical evaluation mode that can parse Boolean logic.