No nulls and better diagnostics

This builds out a little more test framework (which I will shortly delete). But mostly it is a ton of cleanup. This turns on R# static null analysis in paranoid mode (assume everything is potentially null unless marked), and then fixes all complaints.