These are ruleset ids, not names
Do not test inactive rulesets
It's more accurate to test starting from HTTP

Some rulesets might not rewrite target domains' document roots, so
considered those to be mixed content is unfair.
Bump version to 4.0.1
RulesetsByID is more complicated than it used to be

It gets populated opportunistically as rulesets are read from the database...
debugging
[bugfix] ruleset tests: check for * targets correctly.
Test www.example.com in place of *.example.com

Also refactor the test target management a bit
Neaten, reduce unneeded verbosity
Handle wildcards in any position
De-dupe test targets more comprehensively
Load the ruleset library once rather than incrementally
Simplify
Slash the number of backslashes