Building block towards D99100.
This implements the initial set of inference rules proposed in the llvm-dev thread "RFC: Decomposing deref(N) into deref(N) + nofree". I've already stumbled across a few more when examining test cases, but it's good to get this checked in and tested.
Probably doesn't make sense to keep this as a bullet point list if there's only the one element :)