feat(components): adds support for multiple insertion points [WIP]

DON'T MERGE

@mhevery could you review this. There is only one piece that is missing (_sortedContents).
If we give them a common interface we could write
`List<InsertionPoint> insertionPoints = <InsertionPoint>[];`

What do you think?