Error handling for all functions

The actual logic behind this is that when we create a polynomial, if memory is insufficient a->poly will be NULL by default. This doesn't stop arithmetic functions from adding polynomials that have the value NULL which is why error checks are required for all of those polynomials as well. If that wasn't the case then even if we are checking if it's NULL when creating, it'll still use that NULL polynomial regardless.

If you need reassurance just look at Reiner's notes and any sample ADT code he has.