Make `Deps.flush({_throwError: true})` more correct.

It will now continue flushing after hitting the first error,
while still throwing that error.
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.