Simplify rescue code

By using the same interface for validators and rescue handlers, the code is much simplified.

ping @tjoyal @sgnr 
How about `rescue_from_duplicate_handlers` only return those with `handler.options.fetch(:rescue_from_duplicate)` to true?