split to functions in Rule.Apply
Trigger.checkOrAdd

I thought maybe not re-firing the rule and instead keeping running it when it triggers itself may speed things up,
though it doesn't seem so. Still kept this function as it looks like a reasonable split.
sprinkling some INLINE pragmas speeds up euler1 by ~3.5%