Simplify typing of Nodes.

Half of the Node implementations can be a SimplyTypedNode which greatly
reduces the boilerplate. The other half at least benefits from a split
of nodeWithComputedType into nodeWithComputedType (which is final)
and the abstract nodeWithComputedType2 that they have to implement.