Add a per cell callback on run_notebook

When using the API it is useful to know the progress of cell
execution (e.g. if running in another thread). This commit adds the
ability to pass a callback function as execute_cell_no_callback that
if set will be called with the current cell number.

An additional helper function is added to NotebookRunner that returns
the number of code cells in the current set workbook. Combined with
the callback this can be used to calculate a % progress.