Move from rspec1 to rspec2

This work moves the tests from rspec1 to rspec2 and tries to make it align a little more closely with how we spec test other providers/types so that end users will have an easier time with things.

It adds code coverage support as well so we can see how untested things are (no spec tests for types makes me sad) and reworks a bunch of bits (as well as slightly extends the git coverage).

I'm no spec genius so I'm sure it's less elegant than possible and a bit of a brute forced rspec2 conversion but it does work and that's nice.