MCO-489 Disable SSLv2 negotiation and ciphers

Here we redefine the constructor of OpenSSL::SSL::SSLContext to default to
disable SSLv2 protocol negotiation and SSLv2 cipher suites.

This is copied pretty directly from the monkey-patching that puppet performs,
which was introduced in 52be0439 for #19151

https://github.com/puppetlabs/puppet/commit/52be043933d40aab3449214f2aa602ceb214f91e
MCO-489 Disable SSLv3 handshakes globally

Here we extend the monkey-patching of OpenSSL::SSL::SSLContext to also
disable SSLv3 protocol negotiation.
Merge pull request #253 from richardc/MCO-489-disable_sslv2_sslv3_by_default_stable

MCO-489 disable sslv2 and sslv3 by default
MCO-489 Avoid clashing with puppets monkeypatch

When loading the puppet agent we load puppet library into the ruby intepreter,
which comes with it's own set of monkeypatches one of which redefines the
initialize of OpenSSL::SSL::SSLContext using the same private method,
__original_initialize.

This causes deep recursion if MCollective needs to reestablish the connection
to the middleware after loading the puppet agent:

    error 2014/10/21 10:16:09: rabbitmq.rb:45:in `on_ssl_connectfail' SSL session creation with stomp+ssl://mcollective@127.0.0.1:61614 failed: stack level too deep

With this patch we change the name of the private method created by our
monkeypatch to __mcollective_original_initialize which avoids the clash/recursion.
Merge pull request #255 from richardc/MCO-489-duelling_monkeys-stable

MCO-489 Avoid clashing with puppets monkeypatch
(MCO-489) Disable empty fragments for BEAST attack mitigation

Ruby 2 disables this flag by default (thus enabling empty fragments) for
BEAST attack mitigation. Empty fragments are used when using TLSv1.0
with a CBC mode cipher. For reasons as-yet unclear, ActiveMQ seems to
respond poorly when they are used, and mcollective can't talk to it.

This is problematic combined with the previous patch to disable SSLv2
and SSLv3, because versions of openssl < 1.0.1 (which are still common)
don't support TLSv1.1 or TLSv1.2. This leaves only TLSv1.0 as an
option, with CBC mode ciphers preferred. This causes trouble with
ActiveMQ.

Because BEAST isn't an attack that affects mcollective (it's a
chosen-plaintext attack against browsers), this commit just reenables
the flag to disable empty fragments. This means mcollective will
be able to talk to ActiveMQ on ruby 2.0 with openssl < 1.0.1.
Merge pull request #257 from nicklewis/MCO-489-disable-beast-mitigation

(MCO-489) Disable empty fragments for BEAST attack mitigation
Merge remote-tracking branch 'origin/stable'

Conflicts:
	lib/mcollective/monkey_patches.rb