Fix mutation activation

The mutation activation code was using pointer arithmetic to determine the index of the mutation to activate.
Instead we supply the id of the mutation.
Also the actual activation was hidden behind a cooldown check, which most mutations don't have.

Fixes #9865, the pointer arithmetic broke, causing hunger, thirst, and fatigue to be incremented by random amounts since the trait it was supposedly triggering was a random swath of memory.