Clean up and improve the between-actors collision code:
* Give names to the A, B tuples from BetweenBoxes and call them the stable and
mover doodads. All ops are from the perspective of the stable (A) box in
relation to the mover (B).
* Replace the map[*Actor]*Actor collision struct to one that supports arrays of
colliding actors, enabling one actor to post OnLeave events correctly when it
overlapped several actors at once.
* Possibly improve on some of the collision bugs along the way.
Some issues remaining:
* If playing AS an offset-hitbox character:
* Solid hitboxes against closed doors and platforms works OK.
* Button InHitbox (overlap) checks do not fire (buttons won't press).
* If playing with a non-offset character (e.g. boy.doodad)
* Solid hitboxes work and Buttons will press correctly.
* Both types of player hitboxes:
* When touching a static object such as the Start Flag which has an offset
hitbox of its own: the Start Flag will creep up the level on its Y axis
when touched before it settles and won't move.
When an actor's Hitbox doesn't begin at 0,0 the collision checks between
boxes is buggy. Current progress:
* Player is a 32x64 size sprite with a hitbox of 0,32 32x32 (bottom half)
* Landing onTop works
* Hitting onBottom works
* Bug: colliding from the side currently pushes the player 32px down
into the floor. With non-offset doodads walking sideways into e.g. a
locked door halts the X and Y movement until you let go, but offset
doodads get pushed down mysteriously.