General Fixes and Improvements

* Reimplemented draw event subchecks, I forgot when I moved them to separate functions for the purpose of inheritance/event perform to add them to special case events that are called manually.
* Implemented the game end event to work the same as GM8.1, it is called after the room end for the current room and instance destroy events are not fired, much the same as switching rooms. I implemented it only for XLIB and Win32 as Cocoa's code is a fucking mess, because Mac is shit. Fixes #722

Tested and confirmed working on multiples games, can be merged.