Test that helper return values are isolated

More specifically, a helper re-runs and its return value hash't
changed, nothing should change in the DOM. Test this for:
(1) helpers in text nodes
(2) helpers in element attributes
(3) helpers in dynamic template inclusion
Isolate return values from helpers

Do the appropriate equality check for three cases:
(1) helpers in text nodes
(2) helpers in element attributes
(3) helpers in dynamic template inclusion

Also, assert that helpers passed to template inclusion indeed
return components or null.
Correct helper return value isolation

- When helpers return SafeStrings, compare their underlying
  strings.
- When helpers return objects (such as for dynamic attributes),
  never isolate. The objects may have been mutated directly.
  AttributeHandler ends up only affecting real changes.
Isolate attributes on `<p {{attrs}}>`

A helper can return an object with a set of element attributes via
`<p {{attrs}}>`. When it re-runs due to a dependency changing the
value for a given attribute might stay the same. Test that the
attribute is not set on the DOM element.
Correctly check for reserved template names