Discard shared host node after evaluation
Currently, the array of host nodes shared with the interpreter is cleaned up only during interpreter garbage collection, meaning you need to have heap sizes for host and heap that somehow "play nice" together: GC on both sides must more or less alternate to keep this array (and hence the host heap) small.
With this change, indirections to host thunks (not closures) are removed immediately after evaluation. This is based on the assumption that thunks are never replicated. (We cannot do the same with closures, because closures may be replicated during currying.)
This optimization used to be implemented, but was removed in !90 (merged). Unfortunately that MR contains more fixes, and it is not clear what bug exactly is being solved.