add set_readonly and set_readonly_scalars options

This adds a `set_readonly` and `set_readonly_scalars` options, to set the output structure readonly, deeply. The second option excludes references.

Reason for this code is that at $work, we need a way to protect users of deserealized structures against modifying it. Having this option avoids wasting time recursing on it.

This is a better re-implementation of #57