Take all methods except isNull outside of the typeclass.

This avoids issues where two definitions are logically
inconsistent (e.g. making notNull = isNull).  Furthermore, as it
currently stands GeneralizedNewtypeDeriving doesn't work with the IsNull
class for functions like isNullM; this should fix that problem.
Merge pull request #3 from ivan-m/Split-out-methods

Take all methods except isNull outside of the typeclass.