Turn ship_attack to be ship on ship.

- Part of the whole debuff cleanup.
Unmuck all the things

- Fleet is now a thing;
- Ditched the PrunedFleet; just unify this with the actual Fleet.
- Update all methods to use this.
Nuke the explicitly required debuff field.

- Provide ways to specify default values so that existing tests do not
  have to be rewritten; also to limit side effects.
- Part 1 of reworking debuff system.
Moved the debuffs to ships, not attributes.

- Attributes are more persistent "values" for a ship.  Other things more
  transient should be called tags, but debuffs are the only things for
  now.
- Clean up some variable names, paving the way to remove active/inactive
  distinctions.
Break down the math into more clear parts.

- Those algorithms need to be more distinct.  The web/paint/others will
  need to have the same things done, then they can also be tested
  separately.
Shortcut to construct a tuple with default values

- Will help with migration to better buff/debuff representation, and
  mayhaps other groupings of related things within other namedtuples.
Changed representation of buffs and debuffs.

- Internally they are changed to dedicated tuples.
- Externally they data files have their own sections.
- So all buffs and debuffs in data are restructured.
- All values also default to 0.  So all existing data files have to
  include addition for a default shield_regen value to maintain the
  previous rulesets.  Lazy mode by just adding in 99999 for that.
Merge remote-tracking branch 'duskdragon/master' into debuff_buff_cleanup

Conflicts:
	src/idleiss/ship.py
	tests/data/validload.json
	tests/test_battle.py
	tests/test_ship.py
Fix failed merge
Merge branch 'fail_merge_hullclass'