Allow symmetric key ciphers to work in FIPS mode

This is a first version, in which aes_ctr stream mode is
disabled. Although this cipher is FIPS verified, the interface between
the Erlang and NIF code needs to be rewritten, which will be addressed
by a later commit.
Allow querying FIPS mode status at runtime
Return notsup for disabled algorithms in FIPS mode

The old behaviour was to raise a badarg error from the NIF. The new
behaviour is more consistent with the way compile-time disabled
algorithms are handled.
Support AES CTR stream cipher in FIPS mode

The stream cipher's state had to be changed from an Erlang tuple to a
NIF resource (an EVP_CIPHER_CTX structure) in FIPS mode. Because
OpenSSL 0.9.8 doesn't support copying this structure, the old state
was kept for non-FIPS enabled builds in order to provide a functional
interface.

The downside is that cipher states are no longer compatible between
FIPS and non-FIPS builds.
Do not advertise disabled protocols in FIPS mode
Allow turning FIPS mode on and off

The recommended way would be to set the fips_mode application environment
parameter of the crypto application to true. This would turn FIPS mode on
when the NIF is loaded and would prevent loading the module on error.

An other method is provided via the crypto:enable_fips_mode/1 function, but
it is not recommended to be used in production, as it won't prevent the use
of the crypto module in case of an error, yet OpenSSL will disable all of its
crypto services. It is very useful for test suites however that need to check
both validated and not validated functionality.
Remove digest calculation from NIF sign/verify code

This functionality is already implemented in the Erlang code.
Allow RSA to work in FIPS mode

The digest_type_t structure used to store the NID of the hash
function, but it is now changed to the function that returns the
EVP_MD pointer. The reason is that the NID can be retrieved from the
EVP_MD structure (the type field), but EVP_get_digestbynid cannot be
user reliably to retrieve the EVP_MD from the NID.
Do not report unsupported curves in FIPS mode
Ensure SRP is disabled in FIPS mode

Also fixed the Erlang code to consistently convert notsup atoms
returned from the NIFs to notsup errors.
Update test suites with FIPS mode support

Every algorithm is now tested in both FIPS and non-FIPS modes (when
crypto is compiled with FIPS support). In FIPS mode non-FIPS
algorithms are disabled and the tests verify that they crash with
notsup error as expected.

In FIPS mode RSA and EC algorithms don't work if the key sizes are
below a minimum required value - which happened to be the case with
most keys used in the tests. These tests were changed to use longer
keys (even in non-FIPS mode for simplicity).
Use SHA instead of MD5 hash as the PKIX DB's key

MD5 is not available in FIPS mode.
Avoid using non-FIPS compatible settings in tests
Properly filter ssl cipher suites reported as supported

The original code only filtered out ECC suites when ECC was not
supported. However with FIPS mode it is important to properly discard
unsupported symmetric key algorithms as well (e.g. RC4).
Document FIPS mode support