Moved and simplified `flatten_cons` implementation
* replaced specific `flattened_cons` result type with more generic `VariadicTypeList`
** this type also contains the size of the flattened cons type list and as such replaces the `detail::size` helper method
* `flatten_cons` now asserts that it is actually applied to a `Cons` instantiation