Change the self def_id to a self_info in typeck, and inherit

That is, treat `self` as if it has dynamic scope. This seems to
be harmless, and prevents an ICE as per #3563
Revert "Improve a typeck ICE message (slightly)"

This reverts commit c662a9aad7a158c797faa4bd805808f867a3e22e.