Create LWJGL EngineSubsystem

So here's the first step toward a major subsystem for lwjgl.

The update call had to be split into two because Input.update() wouldn't work if it was called after Display.update() -- probably all of the input events were lost at that point.

In the same way, shutdown and dispose had to be separate as the audio system couldn't shut down cleanly otherwise.

I have not implemented everything necessary to make it work headless yet -- I'm certain from my previous headless branch that there are more Display and Mouse references out there.

This code ran without errors for me.
This code passes checkstyle.
This code should be formatted correctly.

I would not be surprised if there are not subtle errors introduced by the slight changing of the order of how things run.   It'd be great if a few other people could try running this before we do a merge.   While I used the rail gun and tried both the flat and mountainous worlds for about 30 minutes, I'm sure I haven't tested everything satisfactorily.