Autoloader

Overall performance overhaul: Plugin autoload + ignore priority

Plugins are not initialized at import time, but only if they are
requested. This change significantly improves initialization time,
especially in devices with restricted processing power. For example,
initializing UrlResolver in my Raspberry Pi took between 14 and 20
seconds, and with this changes it is reduced to 1 to 2 seconds. This
change especially improves UI responsiveness of plugins that use the
library.

Plugins are no longer sorted by priority, but just stored "first come,
first served," and matched only against domain (instead of calling all
"valid_url()" methods). This reduces average resolution time from 2-3
seconds to 1 second when the plugin is already in memory, without
significant lost in the first call (3 seconds).


Most of the changes happened in plugnplay/ and types.py.

A series of small changes in all the plugins were necessary to support the
autoload-on-request functionality. They are:
- Plugin name must match file basename.
- Plugin must include a field "domains" listing the supported domains.
- not_implemented() must throw an ImportError exception.

The bulk of modified files are because of those small changes.

Library API was untouched.