apps.core.models.pointrange_to_grade: Working points to grade "raw-table" mapping.

This only implements the low-level API. We will have a higher level API
on Assignement, and an even higher level API on StaticFeedback.
See #511.
apps.core.models.pointrange_to_grade: Implemented clean() for the map.

Ensures that:
- The lowest range starts with 0.
- The largest range ends with assignment.max_points.
- There are no gaps in the map.

See #511.