Save has_one associations only if record has changes

Prevents save related callbacks such as `after_commit` being
triggered when `has_one` objects are already persisted and have no
changes.
Only use BINARY for mysql case sensitive uniqueness check when column has a case insensitive collation.
Add tip about using RDoc's --pipe command to quickly test the output of
a piece of documentation.

This can be useful for trying out combinations of markup and code, as
discussed in rails/rails@225bcad
Renamed session_serializer option to cookies_serializer
Just very so slightly better test coverage
Added HybridSerializer to upgrade existing marshal cookies (wip: need tests)
Removed an old test
Tests for the HybridSerializer
Fixed minor typo in test code
Changed the tests to ensure HybridSerializer actually migrates the cookies (currently failing)
Convert FlashHash in a Hash with indifferent access
Stringify the incoming hash in FlashHash

Stringify the incoming as well to handle incoming symbol keys from
marshalled sessions
Re-write legacy (marshal) cookies on read
Remove serializer option from session_store.rb template
Fix AppGeneratorTest: serializer option was removed from session_store
Fixed broken flash tests
Missed FlashHash#replace
Added changelog entry for Flash changes [ci skip]
Updated CHANGELOG, docs, guides and release notes.

Also added a `cookies_serializer.rb` initializer to the app template.
Migrate hash-based cookie values correctly