correct handling of moves for struct-record update. Part of #3678. Fixes #2828, #3904, #4719.
Reason: Better grouping of related modules, future-proving for a more extensive math library.