tinytest/run now returns immediatedly; sends a 'complete' record when finished

Otherwise the DDP call to tinytest/run was blocking client test execution,
in particular Accounts DDP calls won't run concurrently with another DDP call,
even if the first DDP call calls unblock.
Tolerate repeated test reports in tinytest

This fixes the status bar, which was otherwise double-counting repeated reports
Use window.opener in OAuth flow only when localStorage doesn't work.

Move OAuth._endOfLoginResponse HTML/JS into asset instead of piecing it
together inline.

Fixes #2302.
tinytest: don't pass msg.fields into _.has if it's falsey.
Fix textarea HTML parsing

In modifying getContent, we neglected the fact that parseAttrs wraps arrays in HTML.Attrs.  Now we wrap arrays outside of parseAttrs near the code that modifies the attributes array for textarea contents.

Needs tests
Remove Array.prototype.slice.call on a NodeList.

It breaks in IE8.
Fix Vincent’s textarea bug

Textarea would get same content as previous tag in a template, because the variable wasn’t cleared!

Needs test
Fix `parentNode` check to decide whether to call a moveElement UI hook.

IE8 sets an element's `parentNode` to an HTMLDocument at funny times
even when the element hasn't been added to the DOM (like if you add a
child to the element), so a check for falsey sometimes misleads us into
thinking that the element is in the DOM when it's not (and thus calling
a moveElement UI hook for an element that was never inserted).

The corresponding check on `removeElementWithHooks` is okay, because if
the element's parentNode is an HTMLDocument, we won't find a ui hook to
call (unless you for some reason added ui hooks to the HTMLDocument).

Fixes "ui hooks" test in IE8.
Update `canonicalizeHtml` list of DOMRange/DOMBackend element properties.

Fixes "ui hooks - nested domrange" test in IE8.
Throw errors in {{foo bar}}, foo not a function

Fix the “simpler helper” test and expand the cases where we detect that “foo” is missing or not a function (e.g. is a scalar property of the data context).
Fix Parties on IE9 by not using parentElement

Using parentElement instead of parentNode was probably a typo.  I didn’t even know there was an Element#parentElement alongside Node#parentNode in the DOM, but apparently there is, and apparently IE 9 supports it, but for some reason it doesn’t work.

The lesson is: never use parentElement on a DOM node.  Use parentNode and be done with it.
Prevent error in console when running tests
Make test-in-browser show current client test
Clean up stream disconnect tests.

Make sure we always call the `expect` function, even if we fail. That
gives us a nice failure message instead of "Async batch timed out".

Make sure we close the stream in each test if we fail. Previously, in
some IEs, a "basic disconnect" timeout without closing the stream seems
to cause a somewhat random subset of other tests to time out or
fail. (Possibly a per-domain connection limit?)
Log fewer “no heartbeat” messages in tests

Don’t log them for stub streams.

In livedata_connection, fire the onConnected callback *after* we have set up the stream, so we don’t set up a stream that has just been disconnected!
Add textarea parse tests

Test for bugs reported by Andrew and Vincent, concerning parsing of dynamic attributes and contents of textarea.