ArrayPlotData Improvements

Main improvement is an .update_data() method which allows the plot data to modify a group of data items simultaneously but only trigger one data_changed event (with multiple 'updated' or 'new' entries).  This helps prevent issues with plots when you want to change the size of both index and value arrays at the same time and not have them be out-of-sync momentarily (which happens if you do two set_data() calls).

In addition fixed a subtle bug with the constructor and automatic series naming, fixed a bug with deletes not emitting events, and cleaned up the code somewhat.