Added multiple 'Undo Delete Cell' in Notebook 

The 'Undo Delete Cell' function in the notebook currently only allows a single undo (issue #4924).
I modified the notebook.js file so that it is possible to restore the last `Notebook.undelete_max` deleted cells at the correct indices in the notebook.
I replaced the corresponding variables (`undelete_backup`, `undelete_index`, `undelete_below`) with arrays to store this deleted cell history and used the `push`, `pop` and `shift`  methods to establish the desired FIFO like behaviour.
As a side effect I fixed a off-by-one error in the `insert_element_at_index` function.
I set the deleted cell history size to 10 what seems reasonable to me (unless your 'd'-key gets stuck ;) ).
I tested everything in chromium-browser and checked the js-console for possible errrors. So far it just works as expected.
@ellisonbg 

`below` seem unneeded,  `merge_above` merge `i-1,i` and `merge_below` merge `i,i+1`, Am i missing something ? 
r, it seem hard to have `i,j` as I could do `merge_cells(7,32)`.