Add cannotDrawList check to componentCanDraw
Add shouldLoadComponentTree option

By default shouldLoadComponentTree is true but a component can change it to false to avoid loading its component tree.
Refactor Substitution to avoid loading its component tree

Instead of loading its component tree initially it delays it until switchValue is set.
When switchValue is set only the component tree of the components inside the switch element is loaded.