Clean stability analysis, v2

A rebase of #7 on `master`.

This is me learning and cleaning up stability analysis — adding comments, changing (and hopefully improving) names, etc. Last commit (to clean up) changes some code, trying to improve it.

For the remote future, there's some space for cleaning it up: we propagate no stability information from a function body to its argument. It's not obvious how to improve on that, but I imagine one can do better (see GHC's absence analysis); I imagine some sort of type inference might also be helpful here.

Now, merging `master` into `topic/from-icfp` will need to fix a semantic conflict in `src/main/scala/ilc/UnicodeOutput.scala` for the rename of `utils`. (Yes, that's not fully related to the rest).