ProjectileSpawners are now interruptable and hold reference inside AbstractEntities they are attached to

AbstractEntities now have reference to their (if any) ProjectileSpawner so we can call <AbstractEntity>.getProjectileSpawner().interrupt(); to remove the thread completely.

any ProjectileSpawners left on RestartLevel also get removed.