Changes to assertion functions

* These macros become no-ops when SAWYER_NDEBUG or NDEBUG is defined.

* The non_null(X) macro returns X when X is not null. The return value
  has the same type as X so that these checks can occur in expressions:

    int foo(const char *prefix) {
        fputs(non_null(prefix), stderr);
    }