Implement weak attacks bounce off shields
- TODO: make sure fleet fires in order of size from smallest to largest
Formalize check on whether ship is alive.
Test for shield bounce and explode

- And you see that it doesn't actually do anything.
Implement correct behavior to shield bouncing.

- Formalized that into a function
- Also fixed the bug that explode not called when shield bounced.
Allow users of this primative function to override
Corrected shield bounce and hull damage

- Shield bounce applies at current shield level, not max shields.
- Hull damage explosion only triggered if weapon glances off.
- Also moved the hull damage calculation into its own function in the
  same way shields are done.  Armor should be done too when more rules
  related to that are added.
Store the tuple for ship data.

- As opposed to generating a new one every time.
Human readable name.
Don't need to keep that inside the file context.
Move Battle.expand into expand_fleet
Drop the temporary raw_data in fleet.
Store sizes as integers internally.

- This ensures that the "smaller" ships, i.e. those defined with a size
  towards the beginning of the size list, will be at the top.
Minor formatting fix.
Fix all the pathing issues.

- Core really shouldn't try to base off where the files are, and not to
  mention that is kinda clunky way to do that.
- Also moved those test files to a shorter path.
Some fun with speedsim.