Checkin release notes
Improve the “swap” functionality of ⌃T

See tests for details.
Support ${var} in regexp part of format string transformations
Skip processing empty captures
Allow peeking at the last element of a scope

This is useful when constructing scopes during parsing.
Fix scopes when re-running parser on captures

If we have multiple overlapping captures and define rules for one of these, the scopes would not be stacked correctly.

Unfortunately the fix (for this rare edge case) does degrade parser speed, as we need to switch to an alternative way of keeping track of scopes, yet for injection grammars, we need to also keep the old system (to have the “current” scope available as a scope_t instance), so while the new system is almost as fast as the old, using both is not.

There should be a few ways to optimize scope_t construction, so that this part will add less overhead in the future (I think it’s roughly 5-10% of parsing time spent to scope_t related stuff).
Check pointer is initialized before using it

I see a few crash reports that indicate this code is called without a valid ‘bundleItemContent’, though unsure how to reproduce.
fixup! Log errors from each call in swap_and_unlink
Make redirect of stderr opt-in
Update network::tbz_t API

The main issue with the old API was inability to capture error output from the tar process.
Don’t leave buffer in partial state if failing to parse grammar
Allow creating non-capturing regexps
Add comparison operators to what’s understood by ⌃T
When in Favorites folder, change Add → Remove From Favorites

In practice it is possible to be in a parent of the Favorites folder and expand items so that the symbolic links in favorites can be selected, this commit does not handle that case, as we would then also need to handle the case where items both inside and outside the Favorites folder were selected (at the same time).

Users who do these things are probably aware of how symbolic links work, and can use “Move to Trash”.

Closes #1089
Don’t make selection visible when nothing is found
String given to scope_t::append now returned from scope_t::back

Previously we would parse the string appended to an existing scope, meaning invalid scopes would not be returned as the same string.

Fixes #1099
Add debug code
Checkin release notes
Support hex characters in format strings
Use digittoint() instead of std::stoi()

Both because of performance and because the latter can throw an exception (although we check the input, so it should not happen with our use of the API).