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
Refactor hashing code to simplify the nif interface

Using the generic EVP_MD_* API makes it possible to remove a lot of
nif functions. Effectively the same change that took place on the
Erlang API in R16B01 is now applied to the C code.

The streaming API in nof-FIPS build is still using the old, low level
C functions to allow context copying on OpenSSL 0.9.8, but through
some generic functions at least.
Refactor hmac code to simplify the nif interface
Refactor block ciphers to simplify the nif interface

The disabled algorithm tests in FIPS mode had to be slightly updated
because the new, generic code checks key, iv and data sizes first.
Clean up the nif code

There are various minor improvements and bug fixes:

- use FIPS compatible code whenever it doesn't break the public API
  (unfortunately in some places the non-FIPS path had to be retained
  for compatibility with OpenSSL 0.9.8)
- properly release nif resources and binaries
- supported algorithms are now provided by the nif code (not a mix of
  the C and Erlang code)
- remove unnecessary variables and macro definitions