Feature standalone rules

This pull requests extracts the Replacer logic from the listener and the database driven rule models. 

With this changes it will be possible to load different rules into the replacer which can do anything to the dom document.

So there is no need to create another dom representation of the current document if other changes should be applied dynamically as well.

To summarize the changes:
 * Introduce a `RuleInterface` and extract the css class replacer logic to `ClassAttributeRule`
 * Introduce a `DomManipulator` which can be used without the `Listener`
 * Provide a `loadCssClassReplacerRules` hook so that other rules can be loaded.

Das wäre der nächste Punkt auf meiner Agenda ;) Stimme dir da voll zu, dass man hier offen bleiben sollte, sodass Drittentwickler eigene Regeln über das Backend definieren können.

Wenn wir hier den EventDispatcher einführen, dann würde ich an der Stelle ein Event dispatchen. Z.B. wie hier: https://github.com/netzmacht/contao-workflow/blob/master/src/Netzmacht/Workflow/Contao/Definition/Database/WorkflowBuilder.php#L211

Alternativ halt den Contao Weg. Über ein Konfigurationsarray verschiedene Handler registrieren, die anhand des Selektor-Typs dann die Regel erstellen. 

Ich präferiere für die erste Option. Wie sieht du es?