Add a restart grain button

Do we have a race condition where the exit/error handlers in startGrainInternal() may themselves do `delete runningGrains[grainId]` after we've already restarted the grain?