log_utils: only print the regular `info` to stdout, everything else to stderr
exception: new XylemInternalError and chain_exception function

- XylemInternalError is for internal errors that indicate bugs --> always print
  stacktrace and give message to user to maybe file an issue on github

- chain_exception extracts the exception chaining functionality from raise_from
  without actually raising the exception (if it should just be stored)
config: minor output tweaks and TODO
arguments: TODO
text_util: tweak to_str

 - to_str now has special handling of `list(str)` types because of unicode
   annoyances
util: added remove_duplicates

 - remove_duplicates works on a list and preserves order
Added ensure_... helpers for high-level API
util: add indent function
exception: minor tweak
sources.database: minor output tweak and TODO
os_support: minor output and help tweaks
installers: minor updates

- introduce InstallerError exception

- fix a few small bugs

- minor tweaks to installer_context API

- documentation tweaks
installers.pluings: add 'apt' and minor tweaks
resolve: major overhaul

- a lot more error conditions are properly reported

- resolve now returns results and errors (instead of raising exception)

- the resolve command prints any errors that were returned
commands.main: special error handling for XylemErrors

- at the top level XylemErros are caught and printed showing chained exceptions

- no tracebacks are shown, except in debug mode, or for XylemInternalErrors
install: added module and command