Performance tuning: Array.push instead of Array.concat

This simple change provides a massive speed up in Firefox (See  http://i171.photobucket.com/albums/u320/boubiyeah/ScreenShot2014-11-13at161151_zps32244a0b.png)

concat creates a new Array everytime and it quickly made the GC choke. Strangely, while chrome do get a small performance boost, it's nowhere near as dramatic as in FF (they either have a better gc or concat implementation).

I dislike that imperative style compared to the previous functional style but I think the style/perf tradeoff is worth it. 
I recall seeing a fairly involved benchmark of loops way back in the day and there were some pretty big differences depending on the specifics of the loop (e.g. you could save computations if the loop required item access on a array without nulls by doing an item comparison instead of a index comparison). If we're going to keep the array copy, I'd like to explore that first.

Another trick I saw in lodash is to set the array.length first and then add things square bracket syntax (basically to trigger only one memory allocation)

But as I mentioned, tonight I first want to try refactoring out the array copying altogether, since that would also improve memory consumption. It's a bit of a complicated refactor and I'm not even sure it's feasible yet though.