RSpec upgrade to 3

Upgraded to RSpec 3

In the process some other gems had to be upgraded also.
All the tests pass as expected.

@stephenrichards @axemonkey when you get a minute, please give it once over.

@jasiek if you've got a spare minute, it'd be cool if you could look at this also.

Thank you :japanese_goblin: :guitar: :fallen_leaf: 
I'd probably have a `random` method that wraps `SecureRandom` and stub that, but it looks like it's out of scope for this PR.