avoid direct use of PU constructor

Building picklers from predefined combinators is more robust against possible future API changes.
Merge remote-tracking branch 'upstream/master' into upstream