Make extractor constructors return HtmlExtractor

This is needed so that created extractors have an implicit Functor in
scope. Functors are invariant, which means that a
Functor[HtmlExtractor] does not work as a Functor[SimpleExtractor].
Provide ScrapingOps to deep composite functors
Add tests and README for validator composition