Alarm Fixes

Method was needed to check if the parent has written a grouped event, in which case it will link and unlink it for the child. If not then the child must link and unlink the grouped even itself.

The child must also write all events for the main events, even those the parent declares and the child does not.

This effectively cleans up alarms and stops them from firing subchecks twice, they will always fire at the correct time now regardless of whether they were inherited or not. Resolves #881

https://www.dropbox.com/s/f7llz3207ary6zh/alarminheritancetest.gm81?dl=0
ENIGMA now shows the alarms in this order with the updated unit test:
```
from obj_0 : obj_0 : alarm0
from obj_1 : obj_0 : alarm0
obj_1 : alarm0
obj_2 : alarm0
from obj_3 : obj_0 : alarm0
from obj_0 : obj_0 : alarm0
```
GM8.1 shows them in the same exact order.

I also had to fix events.res to allow alarms to reach -1 again. @sorlok made a fix to have them decrement earlier in https://github.com/enigma-dev/enigma-dev/commit/3491a1d1785af4552cd8f0f86ab36f241423c2ea which broke it by checking smaller than or equal to 0 instead of smaller than 0. This is what caused the following game to break a while back, with my fix applied it works perfectly again.
https://www.dropbox.com/s/bkmtmx4kcggddjm/AItutorial.gmx.zip?dl=0

I also did some additional tests provided by JoshDreamland to ensure the increment and cast yielded the same exact results as GM8.1 and the following unit test is available.
https://www.dropbox.com/s/qvkkmol8aths76m/alarmincrementtest.gm81?dl=0

The instances now fire alarm events in the correct order such as instance 0, 1, 2. But the alarms may fire out of order for an individual instance such as alarm 4, 3, 1, 2 for now because they are not ordered when checking the parent.