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

`ElementAllocator.prototype.allocate()` searches for an already deallocated node (detached and hidden DOM) in `this.detachedNodes`, pops it from the list, then 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. There's no real reason an recycled element must stay in the same position where it was originally at the first time it was allocated (created)... It makes more sense to place it at the end since the engine really treats it as newly allocated element.

Because of this issue, we have seen issues like [this code](http://jsfiddle.net/y9dLW/) where some elements are deallocated then later allocated by other surfaces with wrong DOM element ordering. The use of `RenderController` and `RenderNode.set()` are the easiest ways to reproduce 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.

With this PR, we no longer need to manually manage z-index to fix the unexpected result as long as we create surfaces in the order we want them to render.

---
##### Monkey-patching:
```js
var ElementAllocator = require('famous/core/ElementAllocator');

var _allocate = ElementAllocator.prototype.allocate;

ElementAllocator.prototype.allocate = function () {
  var result = _allocate.apply(this, arguments);
  result.parentNode.appendChild(result);
  return result;
};
```