Add a separate field for challenges as part of issue #8.

Combine DefaultView into View.
Move some controller logic into a state pattern.