Add RIPEMD-160 hash function(s) to the crypto module

This patch adds support for the RIPEMD 160 hash function with the
following functions: ripemd160/1, ripemd160_init/0, ripemd160_update/2
and ripemd160_final/1.

The patch also adds documentation for all of the above enlisted
functions.
Add filename:nativename/1 binary argument test to suite

The filename module accepts binaries as file names. Add a test for
filename:nativename/1 with binary input data as it currently fails on
win32.
Fix filename:nativename/1 on Win32

Don't choke on paths given as binary argument on Win32.
erlsrv: gracefully stop emulator on Windows shutdown

Windows will send the SERVICE_CONTROL_SHUTDOWN event to the service control
handler when shutting down the system. Instead of ignoring the event, erlsrv
will now invoke the stop action.  Likewise, the Erlang emulator (and it's port
drivers) must not quit upon reception of the CTRL_SHUTDOWN_EVENT event in the
console control handler.
Fix use of "clever" mktime

Commit 1eef765 introduced regression (conditional _always_ evaluates
to true) in which erlang:localtime_to_universaltime/2 stopped working
on systems configured with timezone without DST (i.e. UTC) on *BSD
platforms:

1> erlang:localtime_to_universaltime({{2012,1,1},{0,0,0}}, true).
** exception error: bad argument

Signed-off-by: Piotr Sikora <piotr.sikora@frickle.com>
Fix support for leap seconds-aware timezones

erlang:universaltime_to_localtime is leap seconds-aware (since 2008),
however erlang:localtime_to_universaltime is not, which gives
surprising results on systems configured with leap seconds-aware
timezones:

1> erlang:universaltime_to_localtime({{2012,1,1},{0,0,0}}).
{{2012,1,1},{0,0,0}}
2> erlang:localtime_to_universaltime({{2012,1,1},{0,0,0}}).
{{2012,1,1},{0,0,24}}

and completely breaks calendar:local_time_to_universal_time_dst:

3> calendar:local_time_to_universal_time_dst({{2011,1,1},{0,0,0}}).
[]

Signed-off-by: Piotr Sikora <piotr.sikora@frickle.com>
bugfix for vacmViewTreeFamilyMask

The vacmViewTreeFamilyMask is defined to be a bit string in the MIB, not
an OID. However, the MIB implementation assumed the latter, effectively
rendering all attempts to read/set masks via SNMP unsuccessful.

Since the mask is used in hot paths (e.g. access permission checks for
each SNMP operation, the OID representation of the mask has benefits
(e.g. faster processing). Therefore, convert the bitstring to/from its
OID representation when reading/setting any mask object.
SSH: Make "auth_methods" server option re-usable

The 'auth_methods' option is used by the server side of the SSH code to
tell a connecting SSH client about the authentication methods that are
supported by the server. The code still extracts and handles the
'auth_methods' option from Opts in appropriate places, but the Opts
checking code in ssh.erl didn't allow that option to be specified.
fix snmp_generic:split_index_to_keys/2

The function snmp_generic:split_index_to_keys/2 handles dynamic length
RowIndex members, but fails to check that their length actually falls
within the constraints given by the MIB.

The problem becomes real for table indices having an 'OCTET STRING'
syntax, e.g. OCTET STRING(1..32) where it is possible to pass
zero-length strings or strings longer than 32 chars without any
validation failure.
verify table row index constraints in SNMP set requests

When a set-request is received for table columns, check that the varbind
OIDs are syntactically correct. This includes checking that Table Entry
OID as well as the Column OID are present, and that the row index
contains an acceptable number of subidentifiers.

This check was not done carefully enough before, giving the following
test result from an erlang-snmp agent:

 Response: Version = SNMPv3, MsgId = 173, MaxSize = 2048
 Flags = Auth/Priv, SecurityModel = USM
 EngineId = [...], EngineBoots = 16, EngineTime = 81244, UserName = ...
 ContextEngineId = [...], ContextName = [...]
 Request Id = 173, Error Status = No Error , Error Index = 0
 Oid1 = snmpTargetAddrRowStatus , Type = Integer, Value = 4
 Oid2 = snmpTargetAddrTAddress , Type = OctetString, Value = ...
 Oid3 = snmpTargetAddrTimeout , Type = Integer, Value = 100
 Oid4 = snmpTargetAddrRetryCount , Type = Integer, Value = 3
 Oid5 = snmpTargetAddrTagList , Type = OctetString, Value = abc
 Oid6 = snmpTargetAddrParams , Type = OctetString, Value = abc
 Oid7 = snmpTargetAddrStorageType , Type = Integer, Value = 2
 Oid8 = snmpTargetAddrTDomain , Type = ObjectID, Value = 1.3.6.1.6.1.1

Please observe that a table row in snmptargetAddrParams is created
without errors, although an empty RowIndex was specified for all
columnar objects in the request. The index to that table is defined as
IMPLIED SnmpAdminString(1..32).
Merge branch 'bg/temp-hipe-fixes' into pu

Conflicts:
	lib/compiler/test/compilation_SUITE.erl
Merge branch 'hw/asn1rt_check-transform' into pu
Merge branch 'mz/odbc-support-param_query' into pu
Merge branch 'mp/fix-assembler-comment-char-for-hipe-ppc' into pu
Merge branch 'gp/make_erlang_mode_elpa_friendly' into pu
Merge branch 'tp/supervisor-pass-on-errors' into pu
Merge branch 'msp/double_middle_endian' into pu
Merge branch 'fma/gb_difference' into pu
Merge branch 'sal/float_to_list_2' into pu
Merge branch 'mpe/hipe_arm-fix-compile-warning' into pu