Enhancing value tracking's analysis of null-ness was suggested in D27855, so here's a first attempt at that.
Irony: the ultimate motivation for this change is to make LLVM itself faster by improving the IR for dyn_cast, but we can't do that without adding analysis and transforms that will likely slow us down even more until we have all of the pieces in place.
Ie, this won't solve PR28430 alone:
https://llvm.org/bugs/show_bug.cgi?id=28430