I have actually set a size/speed limit in my game as a work around. Objects which can collide with one another must not be smaller than the number of pixels they will move per frame (actually, half of that, I believe). Typically, I don't have objects smaller than 8x8 pixels, and I don't have anything moving close to 8 pixels per frame (or even 4, for that matter).
Hehe, it sounds like it would be "collision alasing".
But the problem is that if you want for example an enemy to move 3 pixels in a direction, and that there is a collision, does it means the enemy can't move ? Of course not, because the enemy could possibly move 1 or 2 pixels in the same direction, and if this is possible, you definitely want it to do that.
Because of this, I think the simplest way is to do it one pixel at a time. Of course it's lazy and inefficient, but my game is not a shooter that will requires lots of fast moving bullets at the same time so I don't care.
Rotating levels aren't any harder provided the object and camera positions are stored in "world space", relative to the origin of the map.
Now that you mention it this is right, you only have to rotate the gravity, and the display. However I still think it is complex to do, and I still show much respect for programmers of SCV4 in this regard.