Assert.throws: handle string typed thrown errors

Before this patch, assert.throws accepted only a regexp to check for string typed thrown errors, otherwise it would replace the expected to null and consider its value as the assertion message.