[BUGFIX beta] Using {{with controller="blah"}} and preserving context wraps keyword.

Previously, the keyword value available in the template was the raw
unwrapped value  This is correct behavior when you are not using a `controller`,
but with a `controller` the keyword value should be wrapped in the
controller instance.

This refactors the custom `{{with}}` logic out of the general `bind` function, and
adds it into the custom `WithView`.

The tests added in https://github.com/emberjs/ember.js/pull/4894 are all
satisfied, so all the context resolution steps there are still correct.