When applying a function mapper to an element, the passed parsed property should be copied.
When applying a function mapper to an element, the passed parsed property should be copied.

- The feature to improve performance of function mappers (#2239) does not take into account that the `cxtProp` is the same object for all elements:  The `cxtProp` is a reference in the stylesheet.  Because `cxtProp` is the same for all elements, storing `fnValue` and `prevFnValue` under `cxtProp` does not make sense.  This can result in the same value being applied to all elements to which the style block applies.
- To remedy this, a copy of the `cxtProp` should be referenced by `eleProp.mapping` rather than the original `cxtProp`.  Then `fnValue` and `prevFnValue` can safely be stored per-element under `eleProp.mapping`.
- Aside: `fnRetVal` should be explicitly checked against `null`, as a nully value (e.g. empty string or zero) could cause unnecessary `fn()` calls.
- Applies to v3.4.x.

Ref #2282 #2239

cytoscape/cytoscape.js,cytoscape/cytoscape.js