Allow observe.install to properly handle arrays.

* Refactoring to enhance optimisation for core/SideTable
* Refactoring to enhance optimisation for core/dom