New surface helpers, fixed GetMapSurface bugs

GetMapSurface is now GetMapEdge, a helper which returns the position
which is solid on the tile map but not so in the difference of a single
unit. This had been happening before, but now a new GetMapSurface has
been added to return the position which is not solid on the tile map but
not so in the difference of a single unit. Also fixed a bug with now
GetMapEdge where the case where no surface was found while looping did
not work as intended.
Moved from PushOut to GetMapSurface and LOTS MORE

Sometimes I forget to commit. Added variables for a horizontal control
lock mechanism which is pending implementation. Modified TileCheckOffset
to be at least greater than the maximum speed and also made it constant.
Made MaxLedgeHeight constant and also made it to be at least greater
than the maximum speed. Ended dependence on PushOut and PushIn. Finally!
As a result, the stick sensors were obsolete and thus removed. Added
half-assed ceiling and side collision handling. Fixed a bug where the
player would be in the wrong wall mode after detaching from lack of
momentum. The debug spindash thing now accelerates you to your max
speed. Side sensors for the bottom of the player are now different when
in the air. The local/global wallmode helpers are now public.
Fixed width bug, now prints widths in ToString

Fixed a bug where a mask with no left surface at the position would
incorrectly return the maximum position rather than the minimum.
Fixed test data

Oops! The test levels now spawn the player correctly to account for the
previously flipped level rendering.
Added 45-degree half tiles

Added some possible tiles to the tilesheet as well.
New test data

Testing the new 45-degree tiles and also the circle_in tiles are so fun
to play around with!