Refactor specs

The specs seemed like they wanted some loving, so I went through them and re-worked them a bit. The specs now take advantage of rspec's hierarchical nature (progressively composing scenarios) and contain one expectation (`should`) per specification (`it`). I find the `--format documentation` output to be more readable now, and there's considerably less duplication in the test code.

I attempted to keep the tests as similar as possible during this process, but I'd love extra eyes.