Add generic update based on cycle time for enemy AI

Also change attackRate to be second based float time
Allow non-looping animations

Will be good for firing shots and being hit
Also try and fix collision rectangle by updating the sizes
EnemyAI is now only notification updated when enemies are in view

AI determines to be aggressive or to walk instead of the enemy itself
Many of Aggressive AI changes

Agro only responds to Actors that are players
If an actor is an enemy (assumed to be in view because that's the only
time update is called) if the enemy is agro then go agro
Aggressive AI stays agro for a few seconds even after the player leaves
the enemy's view range, in case the player steps back into view
More heavy work on AgressiveAI
Intelligently manage all causes of aggressiveness for AggressiveAI