httpcore.py: accept 'buffer_share' query parameter on requests

I hate this mess of other web thingies adding random query parameters on
URLs, but real clients appear to get caught up by this one and I'm not
quite willing to make them blow up. buffer_share is now treated like the
utm_ parameters (ie, it's stripped and you get a redirection to the real
underlying URL).
httpcore.py: detect and reject mangled Host: values

Mangled Host: values (taken either from Host: or from the request URI) can
be used to do various bad things.

This change also corrects the handling of hostnames in the request URI to
fully work once again. We now have to fix both reqdata['server-name'] and
the newly-added-for-https reqdata['server-url']. Probably this should be
restructured.