Better handle the tree freeze method

Instead of dynamically replacing the existing method
with a new method, just have the existing method check
if the node has been frozen and immediately abort, this
workers better with decorators, subclassing...

This also unifies how freezing is done across all types
that support it, ensuring that the frozen attribute can
be set by users (if they so choose).

Change-Id: I1e6c6568b7f91765d654d25ca6e68e9b568603fc
Merge "Better handle the tree freeze method"