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.
Yes, this is really just a provision in case the file monitor doesn't pick up the change (it also happens sooner than the file monitor event so we get a crack at the library before anything else is likely to touch it).