SSL: add TLS PSK (RFC 4279 and RFC 5487) cipher suites
crypto: Refactor mod_exp_nif

As a preparation for the new mod_exp_prime and in the quest to reduce
to use of the old mpint format.
CRYPTO: add support for RFC-2945 SRP-3 and RFC-5054 SRP-6a authentication
SSL: add TLS-SRP (RFC 5054) cipher suites
SSL: add tests for PSK and SRP ciphers
SSL: enable hash_size values for sha224, sha384 and sha512

Some of the PSK and SRP ciphers default to sha384, this enables
hash_size for that cipher. It also adds sha512 and sha224 to be
prepared for further cipher enhancements.
SSL: add documentation for PSK and SRP ciphers options
update sys:get_status/2,3 documentation for gen_event

Modify the documentation for the sys:get_status/2,3 functions to reflect
that they also work on gen_event processes, and add a cross reference for
gen_event:format_status/2 to go along with the existing cross references
for gen_server and gen_fsm.
add sys:get_state/1,2 and sys:replace_state/2,3

At Erlang Factory 2013 there was discussion during one of the talks about
the sys:get_status functions and how useful they were for debugging. Geoff
Cant mentioned it would be very useful if the sys module also provided
functions to use while debugging to get just the state of a process and
also to be able to replace the state of a process, and many others in the
audience appeared to agree.

The sys:get_state/1,2 functions return the state of a gen_server, gen_fsm,
or gen_event process. The return value varies depending on the process
type: process state for a gen_server, state name and state data for a
gen_fsm, and handler module, handler id, and handler state for each handler
registered in a gen_event process.

The sys:replace_state/2,3 functions allow the state of a gen_server,
gen_fsm, or gen_event process to be replaced with a new state. These
functions take a function argument that updates or replaces the process
state; using a function to change the state eliminates the race condition
of first reading the state via sys:get_state/1 or sys:get_state/2, using
its return value to create a new state, and then replacing the old state
with the new state, since during that time the process might have received
other calls or messages that could have changed its state.

* For a gen_server process, the state replacement function takes the
  process state as an argument and returns a new state.

* For a gen_fsm process, the state replacement function gets a tuple of
  {StateName, StateData} and returns a similar tuple that specifies a new
  state name, new state data, or both.

* For a gen_event process, the state replacement function is called for
  each registered event handler. It gets a tuple {Module, Id, HandlerState}
  and returns a similar tuple that specifies the same Module and Id values
  but may specify a different value for HandlerState.

If the state replacement function crashes or results in an error, the
original state of a gen_server or gen_fsm process is maintained; if such a
crash occurs for a gen_event process, the original state of the event
handler for which the state replacement function was called is maintained,
but the states of other event handlers of the same gen_event process may
still be updated if no errors or crashes occur while replacing their
states.

Add documentation for sys:get_state/1,2 and sys:replace_state/2,3. The
documentation explicitly notes that the functions are intended for use
during debugging.

Add new tests for these functions to gen_server_SUITE, gen_fsm_SUITE, and
gen_event_SUITE.
Removed ?line macro
ssl: Add option to list all available ciper suites and enhanced documentation
CRYPTO: add algorithms/0 function that returns a list off compiled in crypto algorithms

add algorithms/0 function that returns a list off compiled in crypto algorithms
and make tests suites with SHA226, SHA256, SHA384 and SHA512 conditional based
on that
crypto: New SRP API

Adjust API to better fit in with similar funtions in crypto
ssl: Use new SRP crypto API
Merge branch 'ia/ssl/PSK-SRP' into maint

* ia/ssl/PSK-SRP:
  ssl: Use new SRP crypto API
  crypto: New SRP API
  CRYPTO: add algorithms/0 function that returns a list off compiled in crypto algorithms
  ssl: Add option to list all available ciper suites and enhanced documentation
  SSL: add documentation for PSK and SRP ciphers options
  SSL: enable hash_size values for sha224, sha384 and sha512
  SSL: add tests for PSK and SRP ciphers
  SSL: add TLS-SRP (RFC 5054) cipher suites
  CRYPTO: add support for RFC-2945 SRP-3 and RFC-5054 SRP-6a authentication
  crypto: Refactor mod_exp_nif
  SSL: add TLS PSK (RFC 4279 and RFC 5487) cipher suites
Merge remote branch 'upstream/maint'
Consistent definition of priority levels

In the specs and the documentation of the spawn_opt family of functions
there is the following definition of priority levels:

	Level = low | normal | high

However, the process_flag/1 function in that module reads:

  process_flag(Flag :: priority, Level) -> OldLevel

    Types:

	Level = OldLevel = priority_level()
	priority_level() = low | normal | high | max

This is clearly inconsistent. Change specs to use the process_level()
type declaration instead of re-defining it in various places.
Fixed documentation for priority_level to spawn_opt
Merge branch 'ks/erlang-spawn_opt-process_level/OTP-11008' into maint

* ks/erlang-spawn_opt-process_level/OTP-11008:
  Fixed documentation for priority_level to spawn_opt
  Consistent definition of priority levels
Update preloaded modules