Split the concept of a 'clip type' from a 'clip instance'.

This allows us to centralize the resolve functions in one spot just like
we do for routes in ngRoute.