Do not create `subviews` until they are used.

A lot of empty `subviews` arrays clutters debugger. And considering we now have regions, subviews are not needed 100% of the time. This shall delay initialising them until they are actually used. Also, slight perf gain.

Also, do not throw error if `initialize` was not redefined, not needed now.