Support for @ in proxy password and username

The only change(which makes a (BIG) difference) is on the line 140.
which now splits the `url` from the last `@` to get auth and proxy.

##### Effect of the change:
If the proxy is `'http://abc:abc@123@abc.com:80'`,
Currently, it is parsed as:
- auth => `abc:abc`
   - user => `abc`
   - password => `abc`
- url => `123@abc.com:80`
   - host => `123@abc.com` >>> Causes Error!
   - port => `80`

After my edit, it is parsed as:
- auth => `abc:abc@123`
   - user => `abc`
   - password => `abc@123`
- url => `abc.com:80`
   - host => `abc.com` >>> NO Error! Yay!!
   - port => `80`