Collection Parts

This splits out `Collection` into three parts: `curated`, `editorsPicks` and `results`, and keeps `items` as these lists added together with a little bit of deduping.
This is so that we have more flexibility with the `Collection` object, while still keeping the behaviour of `Collection.items`. We are merely giving more exposure to how the lists get added.

Because of this change, we needed to change how the template deduping worked. It now no longer deals with `Collection` instance, and instead only deals with or returns `Seq[Trail]`.
This means we also move away from creating an instance of `TemplateDeduping` in `frontBody`, and instead this is added as an implicit parameter to templates where it is needed. The only requirement now being an implicit instance resolving from the context in which the template is called.
This keeps the templates cleaner as we can call an instance of `TemplateDeduping` where we need it, instead of having to pass along the deduped trails everywhere we may need it.

@ironsidevsquincy