fix resolution bug in Forward* members

The Forward* members did not properly account for the possibility that
the default or validate handlers could be overridden via set_default or
_validate_* methods. This corrects the problem by only resetting the
relevant handler if the default behavior is triggered for that handler.