Refactor schema deprecation handling

Split out to three methods which are each concerned with only doing one
thing. Since it was hard to grasp what the previous function was doing and
impossible to name it appropriately. Variables have been renamed accordingly
to better reflect what they contain.

I've moved the logic for deciding whether we need to check `:required` for a
deprecated param out of `check_hash_parameter` so that it doesn't need to
know anything about deprecations.

Class docs have been added to match what we're doing in #56.