Revamp specs

I switched the specs over to the spiffy new RSpec `expect(specs).to be_awesome` syntax.

In doing so, I tried to eliminate the use of `subject` and `let` in most places, it had gotten a bit convoluted as the specs grew. I went for a fairly explicit style so that you don't have to hunt too far for any definitions. In some cases it's a couple more lines per test, but I think the clarity is worth it.

I pared down our support classes so that they are now only used for name lookup - all their behaviour is now stubbed if and when it is needed, so that you don't have to open up another file to find a method definition.