Make track tests easier to reason about

These will probably eventually be turned into table tests, but I'm still
figuring out what it needs to do.
Reorder functions in track
Add support for foregone problems

There are a number of reasons why a problem should not be implemented.

For example, the 'grains' and 'leap' problems were sourced from the
JavaRanch Cattledrive, which provides 1-on-1 mentoring in Java.
Therefore, implementing these two problems in Exercism would be a
conflict with the JavaRanch.

Some problems just aren't a good fit for a particular language, either
because it's trivial in that language, or because it's ridiculously
non-trivial.

Or the implementors just decided that it's not an interesting problem.
Refactor main
Document public API
Add package documentation
Restructure project

Create a configlet package that handles all the domain logic, keeping
only the command in main.