Skip wrapping or grouping empty tuples

Also avoid creating intermediate objects when transforming. This type of
in-place mutation is fine since those objects never leave the scope in
which they are instantiated nor they are sent from the outside.
Extend benchmarks and tweak its output
Improve method missing behavior of Reader
Extract creating new path for a reader into a private method
Simplify generating new reader path
Introduce mapper registry
Get rid of primitive obsession in Reader
Small refactor in MapperRegistry