Added scripting support.

Also revamped the engine structure to correctly fit ECS.
Camera is no longer an entity derived type, but rather a Component.
Use Entity.CreateCamera() to achieve the same effect.