Added component dependency system.

Components can specify the types of components they depend on. If one of those components is missing in entity, engine will throw an exception.