Avoid excess allocations in assert().

The use of `...args` caused TypeScript to emit some silly code that did
some unnecessary copying of the `arguments` array, and the use of
`arguments` caused additional allocations.

This change removes `...args`; only one message argument is now allowed,
and you have to pre-concatenate. This only affected ~20 assertions.

This reduces the cumulative allocations done by the JS engine while
starting up the racing demo by 34%, from 192 MB to 127 MB. These
allocations wouldn't happen in release mode, but there are so many of
them that it's worth fixing them even for non-release mode.