Fix Array.append

Also fixes #647 … and sorry for the long delay! The bug was that when using arrays with different heights, the lower one would get raised. When merged, they would become even higher, soon getting to heights of around 10, when (index >> (height * 5)) in getSlot started to flow over.

Now, different heights are handled native and when merging the highest nodes, append will first try to force them into one node instead of always giving them a new parent.
Can you split this out onto two lines?