Huge shield/damage code stability update

- Move the damage-related code into their own functions.
- Move the main RPG damage code to its' own loop that runs separately from the
  Loop script. This new script is also responsible for taking care of the
  shield when it takes damage.
- The shield can now seamlessly transition from on to off and back at any given
  time, meaning that it can now remain on and you will still take damage and
  die as normal. If you take more damage than the shield can absorb, you will
  take the rest as health damage, so you can't spam it to achieve one-hit
  invulnerability anymore.
- Due to the above, the shield no longer needs to auto-off whenever you get hit,
  so it will now permanently stay on until you toggle it off manually.
- The shield should no longer gib you when you respawn after breaking it, kill
  you randomly upon disengaging, and a good chunk of the bugginess surrounding
  its behavior should be gone for good now.

  It still needs further detangling and testing, particularly in dealing with
  accessories, but this should help things.