Calling dispose on an assets will now automatically unregister it.

This patch makes all assets that extend from AbstractAsset
automatically unregister themself at the asset manager when they get
disposed.

This prevents module developers from causing memory leaks
when they only call dispose on the asset.
Don't let GLSL materials and shaders dispose themselfs completly at reload.
Make AbstractAsset implement isDisposed() so that it works always properly.
Create new NullPreftabs to ensure that they are not disposed.
Don't load data for disposed assets, log an error if it is tried.
Make the onDispose and onReload methods protected as they should not be called.
Warn about dispose calls in onReload and fix an issue the warning discovered.
Simplified some AsssetManager code.
Ensure that assets only get disposed once.
Do not skipp null field values when serializing components. Otherwise, server-side changes to fields that set them to null values (i.e. EntityRef.NULL) will NOT be synced to clients.
API to generate meshes from code
API to animate meshes from code
Added a command line option "-loadlastgame" that'll simply load the latest game on startup.
tweaks and fixes
more tweaks and fixes and some doc
Fixed unit test display creation on my linux pc.
Merge #1259 from @flo - unit test fix
Merge #1257 by @shartte - menu bypass option
Add a run config for the option to start straight in the last saved world, bypassing the main menu
Merge #1256 by @shartte - null field fix