Make `Parameters` looks like a `Hash`

* `is_a?(Hash)` returns true.
* `kind_of?(Hash)` returns true.
* All missing methods are proxied to underlying
  `HashWithIndifferentAccess` with deprecation warning.

Note that this commit can be reverted once we reach the next major
release.
Unpublicized `Parameters#converted_arrays`

This method is only use internally for memoization.
Refactor internal method of `Parameters`
Add deprecation on `Parameters.is_a?(Hash)`

We have to override `is_a?` and `kind_of` to make sure that it doesn't
break if people are testing `Parameters.is_a?(Hash)` or
`Parameters.kind_of?(Hash)`. However, since this change will be reverted
in the next major version, we should display the warning message.