Cleanup improvements

All cleanup-related methods are now improved in some way.
Moved DrawJobs to their own directory.
IExternalResource now implements IDisposable which means all external
resources have to know now what to do when they go bye.
Exit doesn't do cleanup anymore because resources might still be used by
the ongoing Step or Draw calls.
Game.Run now does cleanup before returning.
Sealed some classes that are not supposed to be derived from.
Moved related enums to below the class because the class is more
important.
Step and Draw will no longer be called if an object is destroyed without
being removed from the list yet.