Restore actions dialog

This PR adds in a simple restore dialog, showing a table of changes that will be performed by a `packrat::restore` call.
I think we should organize this a bit differently. Typically dialogs are just UI, they don't actually carry out any actions. What you want to do is use the standard ModalDialog<T> as a base class (even if the type is Void) and then perform the action (send to console) in the dialog callback which is passed to the PackratRestoreDialog constructor. A simple example of this form is here: https://github.com/rstudio/rstudio/blob/master/src/gwt/src/org/rstudio/studio/client/notebookv2/CompileNotebookv2OptionsDialog.java

Note that you won't have a meaningful result type as that dialog does, but the fact that your callback is invoked is enough to know that it's okay to restore (you can just use Bool or Void as the type)