A Python Implementation of RFC3986 including validations