Utilize the browser console.assert when possible

Currently our asserts are catchable by try/catches.
This can occur accidentally, hiding real issues in 
both user code, framework code, and explicitly in
promises.

Chrome's currently implementation of console.assert
is not catchable, and does not interfere with the
programs execution. This is likely how we should model
our assert system.
make the test suite work with non-blocking assertions
Fix failing tests for non-blocking assertions
ensure assertion failures are test failures.
upgrade another a recent test to use expectAssertion
Merge pull request #2792 from stefanpenner/uncatchable_assert

Uncatchable assert