* explicit optional usage in strings
* remove some unused StringUtil code
* swiftlint affected files
* more concise optional casting (and avoid a `!`)
Compiler warnings: 343 -> 318
(Actually most of these are in external libs, but 115 remain in Signal/SSK)
// FREEBIE
Typically we're sending an EndSession message because our session has
diverged from the remote party's session. So if we send an EndSession
message, but decrypt it with our old out-of-sync session, how can we
expect them to be able to decrypt it?
Instead, by deleting the existing sessions, we'll fetch a new PreKey,
and start fresh with the remote side.
// FREEBIE
This action was previously hidden under a secret longpress gesture in
the fingerprint view controller.
Ideally we'd never receive corrupted messages, but at the point we do,
our sessions are out of whack, and the only recovery option is to reset.
Let's help our users do that.
* Resetting session sends END_SESSION message
Otherwise the remote side wouldn't know we reset the session and will
send us a message on the old ratchet.
* Don't reset their identity key when resetting sender ratchet.
* Updated translations
// FREEBIE