fix tried logging to non-existant channel exception

closes #6168
missing tab
tab to space
remove double click sound when switching production tabs

closes #5863
bring back click sound for TAB and PageUp/Down
Merge pull request #6318 from Mailaender/log-session-deserialize-exception

Fixed Session.Deserialize exceptions not throwing properly
Refactor more power and infiltration stuff. Create new power sabotage ability for spies in ra and ts.
Have AI account for power outages
Merge pull request #6321 from Mailaender/less-nervous-clicksounds

Fixed double click sound on Tiberian Dawn production tabs
UncloakOnUnload is now on by default.
Merge pull request #6358 from huwpascoe/bleed

Cloaked APCs are no longer unstoppable harrassment machines.
Merge pull request #6202 from ScottNZ/spyabilities

Add power sabotage ability to spy
Added `int subCell = -1` to IMove.MoveIntoWorld & IPositionable.SetPosition(Actor self, CPos cell)
Refactor MobileInfo.CanEnterCell
Fixed UnloadCargo stacking using new subcell API exposure
Refactored [sub-]cell availability logic in IPositionable & ActorMap

Moved the logic from IPositionable.CanEnterCell & integrated sub-cell selection.
Added IPositionable.IsMovingFrom(CPos location, int subCell = -1) - to detect transient actors
Renamed IPositionable.{GetDesiredSubcell => GetAvailableSubcell} - since it checks for available sub-cells
Reduced IPositionable.CanEnterCell to one method that usually uses IPositionable.GetAvailableSubcell
Added actor checking to ActorMap.{HasFreeSubCell, FreeSubCell, AnyUnitsAt} - used by [sub-]cell availability logic
Fixed Mobile.SetPosition & other FixUnloadCargo touch-ups

Fixed Mobile.SetPosition
Finally removed old SubCell enum
Folded MobileInfo.CanEnterCell overloads into one
Renamed IPositionable.{IsMovingFrom => IsLeaving}
Changed Crate.IsLeaving to use crate lifetime
Refactored in new enum SubCell
Changes to map.cs, rename IPositionable.IsLeaving{ => Cell}, add IPositionable.GetValidSubCell
Fixes #6068 & #4605