adding EncodingInterface
improved Host validation
improved path encoding using rawurlencode
improved method naming