Scriptable Weapons and Behaviours

Added weapons which can be implemented in Lua script. The weapon
component contains a bitmask to say which weapons an entity is carrying
and which weapon is currently equipped. The weapon is fired by calling
the behaviour onAttack

Added behaviours for entities which can be implemented in Lua script. A
behaviour script is specified in the Controller component. The script
implements the behaviour interface and provides a custom set of
reactions to game events which affect the entity.

Split PlayerStats component into two components, inventory and skill
modifiers. This allows ai entities to have either or both components.
One use case for this is an ai could drop its inventory contents on
death. Another is a boss ai could have additional skill upgrades.