More input, view and controller stuff.

- Extended input handling to keyboard and window events
- Added Camera class, extending from View, and world-to-view conversion,
and vice-versa
- Camera Controller that never exceeds bounds of the world.
Remove hacks. Start work on combat.

- Lots of stuff like factions, unit listings, entity-view mappings are
now less hardcoded, and more easy to make moddable.
- Components now use @property to automatically push events like
ENTITY_MOVING, ENTITY_STOPPED, etc.
- Initial work on combat system. Extremely inefficient, still untested,
but getting closer.