ipythonblocks: Add `grid` setting to BlockGrid.__init__()

This undocumented setting allows us to avoid calling
_initialize_grid() for no reason during _view_from_grid() calls, since
we had been clobbering the ._grid attribute immediately.

Instead of making matching changes in ImageGrid, I just used **kwargs.
This has the side benefit of avoiding the redundant default
definitions, but it also means that we need to use keyword arguments
to set the BlockGrid-specific parameters.