utils: refactor size functions

New exported functions:
* size_si(): returns a tuple of (size, si-prefix), given size
* sizef(): accepts a single format specifier
utils: new percentagef() function

Accepts a single format specification, and given size, returns a
size string.
cmd::torrent: expose args to file output function
Out::Torrent: refactor and ui improvements to file listing

With this change, the `files show` command will no longer list
all files, but only the top directory. You can give `files show`
arguments to show the contents of specific directories.

Note that you can do:

    torrent 123 files

to show the top directory, but you *can't* do:

    torrent 123 files dir1

to show the contents for dir1. You have to explicitly use
`files show`:

    torrent 123 files show dir1

This is obviously unfortunate, but this is because `files` treats
`show` as a default subcommand, if no other arguments are given.
If you do `files dir1`, transmish will try to look up the
subcommand dir1 and will fail.
Add unittests for the new additions to utils