Use fixture in approval test
Tweak attempt test suite

Set the stage for accepting previous exercises.
Introduce user's problem set

Extract all of the logic related to knowing what a user has worked on
and is working on based on the `current` array and the `completed` hash.

This simplifies testing dramatically, and will make it easier to
introduce the feature in #529: accepting submissions on completed
exercises.