Solution to #71

- add a keyword argument to PlotlyList.update() called immutable (with default =False)
- leave PlotlyDict.update() as is in master branch

`fig['data'].update(some_dict, immutable=True)` creates list of copies
of `some_dict` before calling PlotlyDict.update().

Thus, further updates in `fig['data']` can be applied trace-wise e.g.

`fig['data'][0].update(some_other_dict) only updates the first trace.
this is more readable to me, but i'm certainly not stuck on it.