Support pickle protocol for dataset splits defined as ReadInstruction
@lhoestq But we don't perform conversion to a `NamedSplit` if `_split` is not a string which means it **will** be a `ReadInstruction` after reloading. Yes right ! I read it wrong.
Perfect then
Fixes #2022 (+ some style fixes) 