Make WorldRenderer into an interface.

Delegate WorldRenderer creation to Rendering sub-system

Verify that specific systems are registered after initialization stages execute
Merge pull request #912 from MarcinSc/develop

Items and blocks can now once again be dropped directly into instigator'...
Merge branch 'PR-WorldRenderer-as-interface' into PR-WorldRenderer-as-interface-2014-02-06
Verify required system exist
Handle case where there are no GUI hud elements
Replace Sys calls with EngineTime getRawTimeInMs
HeadlessShader shouldn't be abstract
HeadlessMaterial doesn't correctly set material data field
Isolate lwjgl timer specifics
Sleep 1000 microsecs if no delta change to prevent busy-waiting
Non-lwjgl timer -- identical functionality to lwjgl on Mac/Linux
Simplification of StateMainMenu to be used as a base
Use DisplayDevice isHeadless for registering systems

Rename Display to DisplayDevice

Move opengl from StateInGame to DisplayDevice

Remove resizeViewport() and wasResized() and fold them into calling lwjgl classes

Verify DisplayDevice is registered
Added the two most common interpolation functions
Added the UIDoubleSlider widget
Cleanup
Undoing unintended changes
Move cropping and texture and font rendering into CanvasRenderer
Tweaked cropping behaviour for LwjglCanvasRenderer, to reduce cropping state changes.
Allowing for damaging ability to specify that the dropped items should go directly into instigator's inventory.