Heavily refactor the nullability analysis transfer function.
Heavily refactor the nullability analysis transfer function.

Only have a single case for each of the memory operations, with the
complex handling pushed down a few levels and unified in the
memAccessBase function.

This keeps things cleaner and more maintainable (since all of the
memory access instructions need to be treated roughly the same).
There was even a missing case for StoreInst that was causing some
strange results in real code.

This form is clearly better (and the tests still pass).

travitch/foreign-inference,travitch/foreign-inference