Smart refine

Refinement of a grid block can now be more selective: don't refine the full block at once, but only the required regions will covered by finer grid blocks. This can greatly improve performance of initial iterations of grid structure and save few blocks from unnecessary refinements during regular refinement update.

All problems except for `advection_test` and `maclaurin` require some update of refinement criteria to take full advantage of this feature..