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.