Moved most of the state-check functions to delayed timer functions in the respective actions;

Before:
When player attacks, there would be a attackTimeStart variable = the current time, where in stateCheck() which was run with every frame would check whether the attack has 'expired'. If expired, set player back to idle

However, this could prove inaccurate and cumbersome if many such states need to be checked against.

Now:
In the attack() function, set a timer.performWithDelay function to expire the attack in X milliseconds, where X = length in time of the attack, thus avoiding all those cumbersome conditions

Also, player is only allowed to move when his sprite animation is:
- walking
- running
Or when movementOverride is set to true
Currently, movementOverride is set to true when doing the slide/dodge thing, when running attack; there probably exists a few more of such conditions to override with