added a general model for function evaluation. still detects basic polynomials and uses the coefficient array model for them, but otherwise uses nested function evaluation, which is hopefully optimized out by the interpreter. here's hoping.