Bump RSpec to ~> 2.14.0 and convert to new syntax with transpec

This conversion is done by Transpec 1.13.1 with the following command:
    transpec

* 598 conversions
    from: obj.should
      to: expect(obj).to

* 294 conversions
    from: == expected
      to: eq(expected)

* 144 conversions
    from: obj.stub!(:message)
      to: allow(obj).to receive(:message)

* 75 conversions
    from: obj.should_receive(:message)
      to: expect(obj).to receive(:message)

* 50 conversions
    from: obj.should_not
      to: expect(obj).not_to

* 38 conversions
    from: mock('something')
      to: double('something')

* 17 conversions
    from: =~ /pattern/
      to: match(/pattern/)

* 16 conversions
    from: obj.should_not_receive(:message)
      to: expect(obj).not_to receive(:message)

* 14 conversions
    from: obj.stub(:message)
      to: allow(obj).to receive(:message)

* 12 conversions
    from: expect { }.not_to raise_error(SpecificErrorClass)
      to: expect { }.not_to raise_error

* 7 conversions
    from: lambda { }.should
      to: expect { }.to

* 7 conversions
    from: lambda { }.should_not
      to: expect { }.not_to

* 6 conversions
    from: Klass.any_instance.should_receive(:message)
      to: expect_any_instance_of(Klass).to receive(:message)

* 2 conversions
    from: Klass.any_instance.should_not_receive(:message)
      to: expect_any_instance_of(Klass).not_to receive(:message)

* 2 conversions
    from: obj.stub!(:message).and_return { value }
      to: obj.stub!(:message) { value }

* 1 conversion
    from: collection.should have(n).items
      to: expect(collection.size).to eq(n)

* 1 conversion
    from: obj.stub!(:message)
      to: obj.stub(:message)

Update gemspec to handle RUBY_ENGINE error.

RUBY_ENGINE isn't defined in ruby 1.8.x.