Flawless collision system with rules

Recursive checking with rules instead of direct checks.
Case for floating-point precision passthrough errors after a block.
Rectangle.ToString method for debugging purposes.