Update API to use README file as main content source.

Updating the readme proves more intuitive for the lesson creator in that the readme reads like a normal style blog post. Content held in the commit messages is not immediately discoverable and is a harder medium author and update with.
Use the commit step rather than sha as uniq identifier.

This allows the url to be more human friendly.

Additionally, commit shas change whenever the commit is updated so they may not be reliable.
Maintain course step state via url + use pushState.
Add custom router update method that checks for history support.

Also make PrevNextView reusable.
Scroll to the top on page change.
Add workaround for mustache to know if diffs exists.
Update UI