Collision resolution supports arbitrary strategies

CollisionDetector refactored as a base class defining an interface
that arbitrary collision resolution strategies can implement.
SpatialDictionary refactored to be a subclass of CollisionDetector
and to implement the interface.
Added (untested) tests for SpatialDictionary

SpatialDictionary tests are probably working, but I cannot solve
a runtime error. I believe it's due to the HashableRect class that
I created (Python's set data structure requires hashable elements,
and so I added a __hash__ function to pygame.Rect that returns the
id of the .Rect). I don't know enough about Python to fix this
error yet though.
TypeError fixed and all non-collision tests pass.

Collision-based tests fail with a 'NoneType' object not iterable runtime
error.
Fixed SpatialDictionary unit tests and added more

Fixed a _get_nearby_objects() bug where I was discarding a set element,
converting the set to a list, and returning it in one line. But the
return type of discard is not the set itself (it's None). Added basic
tests for the Entity class and HashableRect.
Added documentation. Task 6.2 complete
Removed unusued imports from SDtests.
Merge pull request #10 from NintenJoe/Task6.2

Task 6.2 - Extend Collision Detection to Support Arbitrary Collision Strategies