Moved to deep clone for `pickMessageInfo`

As reported in #21, it is not clear and easy to shoot yourself with the current shallow clone from `pickMessageInfo`. This PR moves to a deep clone to prevent accidental updates via `normalizeFn`. In this PR:

- Moved `pickMesageInfo` from shallow clone to deep clone
- Added regression test for #21 

Fixes #21 

/cc @mlmorg @Raynos @zheller