Make compositing generic over layout_task

This will allow breaking the layout -> compositing dependency
Break the layout -> compositing dependency

This adds a new layout_traits component for the shared trait.
This should allow for faster builds.
Merge pull request #2885 from arielb1/remove-compositing-layout

Break the compositing -> layout dependency