Fix inconsistency in MathFunction: don't allow terms with a zero coefficient (ie, non-normalized representation)

- Also fix unit tests to match
- When generating strictly linear functions, 0x^1 is *not* a strictly linear function. Fixed by not allowing the most-significant term to be canceled.
Work around cases where our Newton's method implementation breaks down
Handle cases where Newton wants to loop

Also, with recent changes, solve() is O(#terms^2), not O(degree^2), so it's practical to run on might higher-degree polynomials now.
Merge pull request #51 from stepthom/Fixes

Issue 50