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 

I was unhappy with this too. A list of  `{backup:, index:}` arrays will work nicely, thanks for the hint. I will probably be able to get rid of the `below` values by setting `index` to the index of the previous cell (thus checking for `index===-1` instead of `below===true` for the special case).