[Finishes #76012058] Handle edge collisions with pixelless moves

We have two different move blocks in studio, which is generally confusing.  One allows you to specify a number of pixels, the other does not.  I believe the intention is that the pixelless version be used with arrow key events, but it can be used anywhere.

The two different blocks have various inconsistencies in behavior.  One is that when allowSpritesOutsidePlayspace is false (which is currently always), collisions with the edge don't ever happen for studio_move, but do for studio_moveDistance.

The fix makes it so that if we were trying to go outside the placespace, and get reset to inside the playspace, we consider that an edge collision.  I also added some more studio test coverage, which really I think is still lacking.