Make the unit test on a custom file a cli arg.

Instead of modifying the source code, testing on a custom file can be
done by passing a filename as an argument.
Refactor heartbeat; organize challenge data.

In this commit, heartbeat organizes challenge information in an object so that
it is more clear what information is related and used.
Rename functions for clarity.

These function names are easier to understand and document.
Document the new api.
Merge pull request #4 from PaytonTurnage/refactor_0

Refactor HeartBeat