Fix privateData for PhotoChooser
Fix privateData for PhotoChooser

1) don't take privateData from render(), it's per-model-item
2) initialize privateData to empty if doesn't exist
3) it's pure functional, not mutable. PrivateData is given to
decorator, and if a new version is returned, it is updated.
4) State passed to decorator is an immutable deepCopy,
this is used so that global UI state such as filter terms can be
accessed, but the state object can't be used to accumulate state from the
decorator.

See PhotoChooser for example usage, https://team-review.git.corp.google.com/c/arcs-team/chromium-arcsjs/+/1370599

Change-Id: Ic53f632fe857c39eca2ba174e9712e564d3ba0b1

project-oak/arcsjs-core,project-oak/arcsjs-core,project-oak/arcsjs-core,project-oak/arcsjs-core