Refactor the specification to use ReSpec

So, this is an rebased, cleaned up, squashed version of my ReSpec branch. It is identical to the other one, but only includes refactor changes, no text change.

It also puts in the repo a copy of ReSpec. I found that useful when working in an environment where there is no internet access.