cleanup core object init argument passing

- don't allocate new array if no arguments exist
- don't do costly apply, if there are not multiple (or any) arguments to apply to

test run stats:

1 arguments 10153
2 arguments   490
3 arguments     0
4 arguments     5

(yes apps may use this differently, but ultimately the 1 argument case is the most common, and most hot-paths are in ember-corec)
Merge pull request #9561 from stefanpenner/cleanup-init

cleanup core object init argument passing