Add StorageContainer, a serializable key-value data structure
Removed OnCollision component

Nothing used it anyway and it gets in the way of saving /
loading correctly later on.
Make Component::typeName return a value instead of a reference

The performance penalty is minimal and this change will simplify
the handling of script-defined components later on.
Overhaul for StorageContainer

* Removed StorageMap (use a StorageContainer instead)
* Use StorageList instead of StorageVector (simplifies Lua bindings)
* Move type handling from header to source file
Switch to CollisionShape wrapper class

This allows us safer and easier serialization of the
RigidBodyComponent. The Lua bindings of CollisionShape are
cleaner, too.
Each scene node now has at most one OgreEntity attached

It's easier to manage and more intuitive.
Remove string overloads of Entity:*Component

Just use the ID instead
Implement component serialization
Remove OnKeyComponent

Not serializable, no need for it
Overhaul Component type ids

Type ids are now generated by the ComponentFactory. The factory
does not directly use the ids, but since it's the only valid way
to acquire an id, it should serve as a reminder to properly
register a new component class.

In addition, the TYPE_ID field of each component class is now
a constant data field instead of a function. This makes sense
now because the static ids (of the C++ components) are generated
at DLL load time instead of just-in-time when the typeId()
member function is called. This change also makes possible a
more consistent interface for Lua defined component classes.
Move ScriptComponent up into Component

No sense in having separate classes for this
Enable Lua defined Systems
Remove some debug output
Make ScriptEntityFilter work
Fix valgrind complaining about uninitialized values
Explicit init and shutdown for ScriptEntityFilter

This fixes a crash during the destruction of the Engine object.
The engine's EntityManager is destroyed first. During
destruction of the Lua state, any ScriptEntityFilters try to
unregister themselves from the (already destroyed) entity
manager.

To prevent this, we shift the blame on the users (script
authors), requiring them to explicitly initialize and shutdown
the filter, similar to the C++ filters.
Rename ScriptEntityFilter to EntityFilter (only in Lua)

This is more consistent with the C++ usage
Switch Lua scripts over to Component / System
Fix deserialization of non-native types
Add StorageContainer::keys()