ASCII-art Penguins and system info for 23 years: linux_logo hits version 6.0

The linux_logo tool has been generating ANSI/ASCII art Linux logos and
printing system information for 23 years, and has finally hit release 6.0.

The tool came about out of the great Linux "should graphics drivers be in the
kernel" GGI/KGI flamewar of 1997.  In the end Linus Torvalds made a decision
that set back Linux graphics for years, but a side thread developed with
a key discussion "should the boot logo be in kernelspace or userspace".
linux_logo came out as a solution for people with low-end graphics
who fell on the "it should be in userspace" side of things.  And while
you are printing ASCII art, why not print some system info too?

Most of the system info comes from the /proc/cpuinfo file.  In theory the
/proc filesystem is supposed to be part of the stable ABI, but it turns
out that's just a suggestion.  To handle that, I have accumulated a
collection of over 1000 cpuinfo files from all architectures from a wide
variety of machines dating back to the 386 era.  I use these for testing
that the system info looks OK.

Another issue is printing total memory in the system, which seems like it
should be straightforward but is not.  Previously the best way was reading
/proc/iomem but recent security changes have zeroed out all the values in
that file, leading to misreported amounts of memory due to a poor fallback to
checking the size of /proc/kcore (which gives crazy results on 64-bit
systems).  The proper fallback is /proc/meminfo but that gives lower than
expected results on systems that reserve system memory for things like
integrated graphics.

Some other features in the 6.0 release: RISCV and ARM64 support.
Proper handling of big.LITTLE support in ARM (where one system can have
CPUs that vary by both model or manufacturer).  Also adds support for
the Model 15 teletype from the 1930s in case you are using one of
those as a terminal.
