Also thread -f(no-)delete-null-pointer-checks through to CodeGen and
make it disable this behavior. It's not a full implementation of that
flag but it would be good to stay compatible with GCC. GCC 6 started
deleting null checks for 'this' pointers.
This is going to break code that relies on this undefined behavior,
which is a common pattern. We already have -Wnull-dereference for
obvious cases, ubsan catches it, and there's always the flag to
disable it, so I believe it's time to be more aggressive about this.