[WIP] New API for serialized attributes (and store)

Motivations:

* `load` and `dump` is too generic, we have more specific requirements in AR so some of the built-in objects that responds to `load` and `dump` doesn't work correctly here (#15594)
* Break up the overloaded `class_name_or_coder` attribute

Todo:

* [x] Implement new API on `serialize`
* [x] Pass existing tests for `serialize`
* [x] Update documentations for `serialize`
* [ ] Implement new API on `store`
* [ ] Pass existing tests for `store`
* [ ] Update documentations for `store`
* [ ] Switch default to JSON..? (#)