diff: Fix --expand-tabs and --side-by-side.
- Overhaul column width and padding calculation.
- Rewrite print_space() so it is now a) correct and b) understandable.
- Rewrite tab expansion in fetch() for the same reason.
This brings us in line with GNU diff for all cases I could think of.
Sponsored by: Klara, Inc.
Reviewed by: imp
Differential Revision: https://reviews.freebsd.org/D44014