reuse the connection for {ProxyHost, ProxyPort} instead of {Host,Port}

Previous logic was wrong, we passed to `hackney_connect:connect` the
Host and Port instead of the Proxy Host and Port, so the ipv6 detection was
done on the target instead of the proxy.

Also update `hackney:maybe_proxy` so we make sure to always do the proxy
handshacke.

related to #96
make sure to set connections options for each transport

This commit add the following change to the way hackney is connectingf
to a remote socket:

- default options are always defined
- filter connections options / transport using
  hackney_util:filter_options
- pass connection options to hackney_socks5 and hackney_http_transport
use latest hackney_lib

- this change reuse `hackney_url:normalize/1` which simplify the code
  and allows to make the IDNA parsing only once.
- reuse the new hackney_mimetypes to handle mimetypes
fix proxy handling

Previous change removed the correct behaviour. Now:

- with HTTP connections, we connect to the proxt and pass the URL as
  absolute following the RFC
- with HTTPS connections, we are using CONNECT and open a tunnel with
  the proxy. Once the handschake is done, we upgrade the socket to SSL.

Example:

    1> hackney:start().
    ok
    2> {ok, _, _, Ref} =
hackney:get("http://httpbin.org/get",[],[],[{proxy,{"localhost",
8888}}]).
    {ok,200,
        [{<<"Via">>,<<"1.1 tinyproxy (tinyproxy/1.8.3)">>},
         {<<"Content-Length">>,<<"343">>},
         {<<"Date">>,<<"Fri, 18 Apr 2014 07:05:36 GMT">>},
         {<<"Access-Control-Allow-Origin">>,<<"*">>},
         {<<"Content-Type">>,<<"application/json">>},
         {<<"Server">>,<<"gunicorn/0.17.4">>}],
        #Ref<0.0.0.100>}
    3> hackney:body(Ref).
    {ok,<<"{\n  \"url\": \"http://httpbin.org/get\",\n  \"args\": {},\n
\"origin\": \"88.163.70.217\",\n  \"headers\": {\n    \"Host\":
\""...>>}
Merge pull request #99 from benoitc/fix/gh96

HTTP proxies improvement.