URLs rewrite

This is a rewrite of `werkzeug.urls`. `werkzeug._urlparse` was killed and it does not depend on the stdlib at all. Instead we've implemented the stdlib stuff according to our specific needs regarding url representation across different Python versions. This allows for a cleaner implementation of werkzeug functions that operate on urls and furthermore means that wrappers around stdlib functions are not necessary anymore.

Generally IRIs are now represented as unicode strings, URIs are represented as native strings and all functions working on URLs should accept IRIs, URIs and encoded URIs.

While all tests pass I'm sure there are probably differences not covered by the tests that may cause issues, nevertheless I believe it makes sense to merge to branch into `sprint-branch` for further development at this point.

As this is a rather big change I'm not comfortable with the idea of deciding that myself, so I'm making this pull request for a review of the changes.