url: Write own parse and not use urllib.parse.urlsplit. Don't unquote.

Refactor attempt number 2.

re: chfoo/wpull#146 chfoo/wpull#147
url: Add some lru_cache() decorators. Optimize idna check.
url: Reinstate normalize() convenience function.
engine: Catch ValueError during URL parse.

Bad URLs may sneak into the database.

Closes chfoo/wpull#132
Merge branch 'topic/url_parse_2' into develop
processor.web: Update debug log found->candidate
url: More unit test and authority and resource delimiter fix edge cases.