printer: Change how we print multiple returns

Previously we just +='d the string we were going to print, which forced
me to do two separate things for both pretty_print_search and
pretty_print_info, and with both of them we want to put a '\n' between
the results, but not have an extra one at the end. This was working for
info, but I hadn't bothered for search. Now there is a new way of
getting the final printed string. Instead of adding to a string, we
append the string to a list of strings that represent the results and
then use str.join() to do that without any fancy logic in our library.
printer: More fixing of the printing

Right now, '\n' in --format doesn't actually put a newline, but an
actual '\n'. You can still use this with `echo -e $()` or something. You
can actually pass an actual newline using a multiline string in your
shell and it will print a newline, but the \n is treated like a string
at the moment.

It uses a specified sep variable depending on what kind of printing will
be taking place (formatted or unformatted) and then uses that for the
str.join().

Also, the optdepends array has to be processed separately because we
don't want to use wrapper.fill() on it.
printer: Just fixing some code formatting