Rework Array and argument Flatten

http://jsperf.com/new-flatten

For lodash speeds we'll need to change `push.apply` to something similar to [this clever logic](https://github.com/lodash/lodash/blob/master/lodash.js/#L1616-1619)