Add path filtering for log, add json output for log

Relates to discussion #353 (filtering) and #505 (structured CLI output).

The path filtering is used as pijul log -- path* and will log only the changes that touched the listed paths.

The json output feature is invoked as pijul log --output-format=json. Since internally it uses serde, this can be extended to any serde target format. The implementation creates two new structs LogIterator and LogEntry; the former is used to hold the state that was previously loose in Log::run, and provides a for_each method that can be used to map over the log entries efficiently and in a way that reuses the most code (where efficiently means we only have one log entry in memory at a time).

Created by  ammkrn  on August 14, 2021
OU6JOR3CDZTH2H3NTGMV3WDIAWPD3VEJI7JRY3VJ7LPDR3QOA52QC
Change contents