[BUGFIX beta] Extracts computed property set into a separate function

This is done to work around V8 (it cannot optimize functions with `try` blocks).

Comparison from a real app:

`defineProperty`

Before:
![defineproperty
deopt](https://cloud.githubusercontent.com/assets/1131196/4164553/ad42a504-34f6-11e4-92cc-fdf17e88cc22.png)

After:
![defineproperty
cp-set](https://cloud.githubusercontent.com/assets/1131196/4164559/bf012a86-34f6-11e4-9bba-e5b2dc378946.png)
@mixonic I honestly don't recall `__nextSuper.apply(this, arguments)` but I'm pretty new part of the code base. Generally, you want to avoid passing `arguments` to the function (and in that case `apply` is a function that calls either `Function.call` or `Function.apply`).

As I mentioned before, calling `Function.apply` is safe but I'm not sure why we stopped doing that. Here's the [commit](https://github.com/emberjs/ember.js/commit/22e886a5457f38363b807d8d9f75b4930a837fe9) where "array hack" was introduced. Maybe we should revisit and see if there's perf/functionality impact if we switch to calling `__nextSuper.apply`? Calling [`apply`](https://github.com/emberjs/ember.js/blob/e481725afc274dd8da513f637cf9b3e884c66e22/packages/ember-metal/lib/utils.js#L413) is expensive.