Allow test/runner.run opts to specify exit:false, and exit the process on failure if they don't.

suite.Test.timeout() now accepts `null` to remove timeout for a given test or context.
Split up functional tests (test/run.html) and perf tests (test/perf.html)