Patched to support clang++ and g++ 4.9.1 without compiler errors.

Changes made:
- In the Makefile, use ?= rather than := when setting the compiler, to avoid overriding the system compiler to use g++ (when this might not exist)
- In various places, structs were pre-declared as classes, or vice versa
- In various places, private member variables were assigned values in the constructor, but never used
- Some variables were assigned a value, but that value was never used.  (I've commented where these cases were, in case this was in fact a bug.)
- NULL is strongly-typed: it cannot be implicitly converted to a pointer without a cast - use 0 instead.  (nullptr would be even nicer, but I presume requiring C++11 is off the radar for now.)
- operator== for Polynomial.cpp was an infinite loop - it would carry on whilst unsigned int i was >= 0.