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.
Changed from `immutable`, I think `make_copies`, or possibly something else, might be a little clearer. I was just thinking that we're talking about this because these objects *are* mutable, so maybe `immutable` is not the right word choice. Maybe?