Bug Fix: place recycled element at the end of its parent node

`ElementAllocator.prototype.allocate()` searches `this.detachedNodes` to look for a already deallocated node (detached and hidden DOM) then pops it from the list and recycles it instead of creating a new DOM element, however it's missing this single line that re-orders recycled element so it stays at the bottom of the parent node at the time of its virtual allocation.

Because of this bug, we have seen issues like [this code](http://jsfiddle.net/y9dLW/) where some elements are deallocated then later allocated by other surfaces. The use of `RenderController` and `RenderNode.set()` are the main ones causing this issue. Whenever recycling of DOM element happens, it completely messes up the order of surfaces created, therefore we had to use z-index hack to fix them.

This PR fixes the bug, so we no longer need to manually manage z-index as long as we create surfaces in the order we want them to render.