RSpec 3 and PhantomJS

Upgrade RSpec to 3 with new expectation syntax. Replace Selenium with Poltergeist (PhantomJS) for headless browser testing (using Selenium is still optional).
The reason for this: we'd rather see the full exception in test failures.
Seems like `bypass_rescue` in the test does the same thing.

I'm OK with either. If you do decide to go back to this, then maybe elaborate my rather poor comment to e.g. `# we want test failures to show the full exception`.