save-cmd: Fix --smaller and other behaviour when files are skipped.
The --smaller option now uses parse_num() so it can be something other than
a raw number of bytes (eg. "1.5G").
We were incorrectly marking a tree as valid when we skipped any of its
contents for any reason; that's no good. We can still save a tree to the
backup, but it'll be missing some stuff, so we have to avoid marking it as
valid. That way it won't be skipped next time around.