Finally fixed shield behavior into something better.

- re-implemented ShieldBehavior as something similar to ChargeWeaponController
- cleaned up PlayerButton