Make validate_assignment a part of the Validator trait (#478)
* Make validate_assignment a part of the Validator trait
This refactor allows us to run root validators on assignment, matching V1 behavior
* remove test code
* fix handling of fields-set
* add note on behavior in test docstring
* address pr feedback
* Reduce duplication in functions.rs
* remove unused logic path
* remove updated_field from Extra
* add test for validate_assignment being unsupported
* better test
* tweak PyTypeError usage
---------
Co-authored-by: Samuel Colvin <s@muelcolvin.com>