newton: improve performance of Generator
newton: minor cleanup
polynomial: whitespace only
polynomial: get rid of Monomial::null
polynomial: clean up Monomial
polynomial: new internal representation of Monomial
polynomial: major cleanup (still WIP)
polynomial: finish the new implementation

This basically rewrites the Monomial and Polynomial classes.  The new
implementation should be both safer and probably a bit more efficient
than the old one.

Apart from that the polynomial.h is split into a few separate files
for easier maintenance.
main: update for new {Mo,Poly}nomial implementation
polynomial: improve the performance of compute_symbolic_delta
free-semiring: use raw pointers instead of shared_ptr

There's no good reason to use shared_ptr in subclasses of Node and in
the Evaluator.  And they do add some overhead.
monomial: fix include of free-semiring
cmake: use -DNDEBUG for Release mode

Note that this will disable the assertions (when compiling in Release
mode), which is useful for benchmarks (but not so great for debugging,
so if anything goes wrong you should probably build in Debug mode).
free-semiring: remove the old implementation
fix building with GCC
Merge pull request #18 from michalt/newton

New Polynomial/Monomial and performance improvements