Added CombatPhase, Battle, CombatCmd, Dice, Output::UpdateCombat, Output::ChooseCombat, Input::CmdCombat.
Refactored map.js to canvas.js.

Working: Battle initialsation, ship drawing, placeholder dice drawing.
Oops
Removed HexArrivals. Hex now stores fleets in arrival order.
Removed CommitSession::UpdateReviewGames. Review UI now updated automatically in CommitSession::Commit.
Oops
Moved Battle to Game. Added StartBattleRecord. Review now working.
Avoid recursive exceptions if Controller::SendUpdateGame throws.
Fix Blueprint::AddDice
Added CombatDiceCmd. Can't assign dice yet.
Added Reverse function
Multi-line log messages
Added EnumToString, EnumFromString
Reversible EnumRange
Added GetShipTypeSize
Added session param to Phase::FinishCmd
Added Blueprint::GetLives, Blueprint::GetShield
Auto-assign dice, damage and destroy ship, advance turn.
Update map when destroying ships
Added  FinishBattleRecord. Carry damage over to next battle.
Hide action UI after assigning dice.