Only define `:feature` alias if it's not available

It is possible that Capybara is required before the
`FeatureExampleGroup`. It is also possible another gem or a custom
`feature` implementation is already availble. This does not define our
custom alias if `RSpec.feature` already exists.
Be more specific the related configuration option.
Do not override existing custom `feature` aliases.

It's possible that a user has their own custom `feature` alises which
has already been loaded. If we detect the alias we shouldn't write our
own.
Set Capybara metadata.

This lets us hook into the expanded Caybara DSL once Capybara is loaded.
This is most helpful for apps in the process of upgrading and moving to
no monkey patching. This allows us to parse the specs successfully with
the expanded DSL while when the user hasn't upgraded Capybara.
Reset Capybara's monkey patch on old versions.

Apps just upgrading to RSpec 3 are more likely to have several
conditions which may cause a poor user experience:

- Version of Capybara prior to 2.4.0
- Loading Capybara before rspec-rails in `spec/spec_helper.rb`
- Not enabling monkey patch mode or have set:

  `config.expose_dsl_globally = false`

When these conditions are all met our `feature` alias is exposed
globally overwriting the Capybara monkey patch. This will cause all
feature specs to be skipped.

For a user attempting to upgrade an app this can be a very frustrating,
and confusing, "bug".
Merge pull request #1265 from rspec/fix-load-order-issue

Fix load order issue