Fixes raise in strong params super overwritten

When executing an `ActionController::Parameters#fetch` with a block
that raises a `KeyError` the raised `KeyError` will be rescued and
converted to an `ActionController::ParameterMissing` exception,
covering up the original exception.

This commit fixes the problem by checking if the `KeyError` message
is actually about the key requested in the call to
`ActionController::Parameters#fetch`. If it is we raise a new
`ActionController::ParameterMissing` exception and if it is not we
re-raise the original `KeyError` instead.

Adds tests to cover cases where `ActionController::Parameters#fetch`
relies on either a default value provided or a block passed.

Implements ActionController::Parameters#fetch.