Clean up Cuke DSL

This is a long-overdue tidying up of the DSL we use to write tests in Cucumber.  It's still not my favorite chunk of code, but some things are better:

* Show similarities between how we test ruby, python and other languages; should simplify future additions to the cukes.
* Drastically reduce public interface of DSL, so it's clear what actually gets used in the step definitions
* Improve wording (and reduce wordiness) of features, so it's more obvious what they're testing
* Move features, and rename some feature files
  * This groups the test runs more logically, but
  * Unfortunately makes the diff hard to read.  Maybe spend a few minutes reading the features and step definitions.  They really are nicer.
* Remove the LF dependency on Rails
  * The last vestiges of Rails were in the cukes, but didn't need to be
  * Removes 20 dependencies from LF