AssumeQuality plugin - default quality for tasks

Many releases no longer explicitly flag 720p, breaking quality filters or requiring complex manipulate setups. This allows a default quality to be applied to entries when none is found.

http://flexget.com/ticket/1498
Operate on individual quality components

Now applies defaults by quality component, so that defaults can be used even if other components are filled by the release.
For example: "assumequality: 1080p webdl 10bit truehd" and a release flagged 720p h264 is output with "720p webdl h264 truehd"

Should also handle the addition of more quality components as mentioned in https://github.com/Flexget/Flexget/pull/104#issuecomment-29127271
moved to plugins/metainfo
added underscores to filename & plugin name
Advanced Configuration start

Plugin now understands advanced configuration in the form of quality
requirements and qualities to assume if the entry matches them. These
rules are not yet used for assuming, only tested and stored.

Also refactored the act of assuming an entry's quality into a separate
method.
Advanced rules now used for default case

No other rule matching yet
Case insensitivity on 'everything'

Not sure why I wrote the if that way round.
Rule matching now performed
Store rules in sorted list

Rules are now stored as namedtuples in a sorted list (sorted by
precision of the rule, see precision()). This allows rules to have
priorities, currently more specific rule = higher priority.
Refactor 'everything' test
All rules now tested and applied
Added advanced usage example
Improve precision calculation
Documentation updated

Applies quality components to entries that match specified quality
requirements.
When a quality is applied, any components which are unknown in the
entry are filled from the applied quality. Quality requirements are
tested in order of increasing precision (ie "720p h264" is more
precise than "1080p" so gets tested first), and applied as matches are
found. A pseudo-requirement "everything" is also supported, which will
match all qualities. Using the simple configuration is the same as
specifying an "everything" rule.
Changed to using 'any' req instead of 'everything'

Switched to using the real quality component 'any', which allows the
removal of some special cases. Also tweaked precision().
Update plugin to v1.2.0 compatibility
Correct schema bug

Can't validate dict keys, so allow any.
Merge pull request #120 from theaquamarine/assumequality

AssumeQuality plugin - default quality for tasks