Avoid modifying input on failure in X509_(TRUST|PURPOSE)_add.

If X509_TRUST_add() or X509_PURPOSE_add() fail, they will leave the
object in an inconsistent state since the name is already freed.
This commit avoids changing the original name unless the *_add() call
will succeed.

Based on BoringSSL's commit: ab2815eaff6219ef57aedca2f7b1b72333c27fd0

ok miod@
fix manual names that clash with other manuals
Remove get_optional_pkey_id() - it is a hack that existed due to GOST
only sometimes being available... and when it was available it was via
the crypto engine. GOST is now part of libcrypto proper.

Instead of trying to do EVP PKEY lookups via string literals and the
ASN1 interfaces, lookup the methods directly using the appropriate NID.

ok bcook@
Remove OPENSSL_FIPSCANISTER mentions.
Make sure to load absolute symbol address with `dla' instead of `la' when
generating code for 64-bit mips userland.
Correctly output the result in STREEBOG512_Final() when running on a big-endian
system. *blush*
Make GOST compile with a strict C compiler - in this case incrementing a
void pointer is undefined and initialising an array with {} is a syntax
error.

Based on a diff from kinichiro inoguchi.