Patch ruby 2.0 Net::HTTP proxy code for IPv6

Ruby 2.0 changes the way proxying is implemented in Net::HTTP such that
each request will check the URI for "proxy-ness." This check will
generate a URL from the given address and port without wrapping IPv6
addresses in brackets, which triggers an error in the URI library.

Check for this case on startup and monkey patch the offending method if
necessary.
Backport URI::Generic#hostname to Ruby 1.9.2 and older

Documentation for URI::Generic#host in Ruby 2.0.0 explains:

    Since IPv6 addresses are wrapped by brackets in URIs, this method
    returns IPv6 addresses wrapped by brackets. This form is not appropriate
    to pass socket methods such as TCPSocket.open. If unwrapped host names
    are required, use “hostname” method.

Therefore the best way to support IPv6 URIs is to replace calls to
URI::Generic#host with URI::Generic#hostname. The #hostname method is
added in Ruby 1.9.3 so we need to backport it for older ruby versions.

Conflicts:
	chef/lib/chef.rb
Force knife to load http monkey patches
Correctly handle IPv6 literals in chef_server_url (10.x)