Clean up the NullPointers analysis

The documentation now reflects the actual implementation.
Rearrange some functions to push helpers towards the bottom
of the file.
Change the dataflow analysis API

Before, backwards dataflow would execute but results couldn't
be extracted.  This change, unfortunately, introduces an API
break.  On the other hand, now it is useful.