Move entity types from system to core

entity types are now kept in the core and shared by each system
Update system interface

When creating a new system, you now provide a name, priority and update
callback function
misc cleanup

changed tabs to spaces; small change to readme