Fixed #19643 -- Changed call the correct validate() method

As described in the ticket, the to_python() method used to call
super().validate(value), which made it impossible to override
validate() for TypedChoiceField and TypedMultipleChoiceField.

Also, it wasn't enough to just change the call to self.validate() as
the definition of validate was simply set to "pass".

I have changed the super().validate() calls to self.validate(), and
removed the local definitions of validate so that it actually uses
the parent's definition by default, although it's not possible to
override it.

It was also necessary to juggle with the validation, as apparently the
original call to super was a hack to fix the issues with validation.
The code is passing all the tests now.