Update test data which doesn't reflect expected usage

Topics call `serialize :content`, which means that the values in the
database should be YAML encoded, and we would only expect to receive
YAML strings to `update_column` and `update_columns`.
In tag helper, honor html_safe on array parameters; also make safe_join more similar to Array.join by first calling flatten.
Merge pull request #15672 from sgrif/sg-topics-content

Update test data which doesn't reflect expected usage
Merge pull request #15666 from akshay-vishnoi/doc_changes

Correct output of #assert_not
Merge pull request #15667 from samdec/mailer_doc_bug_fix

fix bug in email with name example code
Merge pull request #15654 from pdg137/master

In tag helper, honor html_safe on arrays; also make safe_join more similar to Array.join
Fix performance regression on preloading HABTM associations

We'd spend a lot of time calling `hash` and `eql?` on the join model,
which has no primary key. Calling `id` with no primary key is a really
slow way to get back `nil`, so we can improve the performance there.
However, even with the escape clause, we *still* weren't getting high
enough performance, as we were checking the primary key too much. `hash`
will always return `nil.hash` for records with no id, and `==` will
always return `false`. We can optimize those cases in the HABTM join
model.
Merge pull request #15665 from sgrif/sg-id-perf

Fix performance regression on preloading HABTM associations
Defer to super, rather than re-implementing Object#hash
Use a conditional rather than early return in `id`
Merge pull request #15676 from sgrif/sg-object-hash

Defer to super, rather than re-implementing Object#hash
Merge pull request #15677 from sgrif/sg-less-imperative-pk

Use a conditional rather than early return in `id`
Add a test to ensure we don't get a performance regression on #hash
Merge pull request #15678 from sgrif/sg-test-hash

Add a test to ensure we don't get a performance regression on #hash
Add missing test cases for #assert_no_difference
[ci skip] BigDecimal#duplicable? returns false in 1.9.x
Merge pull request #15680 from akshay-vishnoi/doc_changes

[ci skip] BigDecimal#duplicable? returns false in 1.9.x
Set flash in test session when necessary.

`to_session_value` returns nil when empty.
Set the status before of setting the response body

The 401 status should be set first because setting the response body in
a live controller also closes the response to further changes.

Fixes #14229.
pg guide, minor copy edits