[BUGFIX beta]  sort guid fallback unconfused by ObjectProxy.

`Em.computed.sort` uses a guid check as a fallback comparator.  In order to
search for items correctly, it also wraps items on removal in an object proxy to
shadow new values with the previous values.

This proxy needs to be sort-equal to the actual object.  To ensure the guid
fallback check treated the item and the proxy as equal, it had a check
`ObjectProxy.detectInstance`.  This check is obviously deficient in the face of
items that might themselves be `ObjectProxy`s, such as `ObjectController`s when
using `@this` as the base array in an `ArrayController`.

This commit creates a local type of `ObjectProxy`, `SearchProxy`, to avoid this
confusion.

Fix #3720.
Merge pull request #3724 from hjdivad/fix-3720

[BUGFIX beta]  sort guid fallback unconfused by ObjectProxy.
[BUGFIX beta] Close #3502 – Fix issue with templateName in Route and render.
Merge pull request #3727 from abuiles/fix_render_template_in_route

[BUGFIX beta] Close #3502 – Fix issue with templateName in Route and render.
[BUGFIX beta] [fixes #3714] PromiseProxy should merely observe promises.

Uncaught exceptions should likely still propogate.