Automatic snapshotting for Packrat projects

This change enables automatic snapshotting for Packrat projects. The automatic snapshot is performed asynchronously by a separate R process, and performs exactly the same operations as Packrat's existing automatic snapshot mechanism (in fact it retrieves these operations from Packrat). Packrat's existing automatic snapshot mechanism takes a snapshot every time a command is executed; the goal of this change is generally to enable automatic snapshotting but to snapshot only when the library has undergone a meaningful change. 

Once the restore dialog changes are in, we can plug them into the new client event emitted when a restore is needed.
Since there is a cost to both file monitoring and snapshotting I think they should stand down if they are not in a packratified project. If we assume that a user restarts after bootstrap then it's enough to check for this at startup. Slightly more granular would be to check during the package_status call. You could also subscribe to these events unqualfied and then do a very lightweight check for a "packrat" directory (or packrat/packrat.lock file) as a filter against actually processing the events.