Atom: handle invalid */foo-version wildcard

Before, a wildcard atom could be treated as valid even though it
specified a version without an operator, as reported at here:

https://forums.gentoo.org/viewtopic-p-7314746.html#7314746
_find_bad_atoms: use insert_category_into_atom

This shares/aligns logic with is_valid_package_atom.
repoman: deprecate mono.eclass, bug #471184
depgraph: buidpkgonly error earlier, bug #471910
depgraph: tuple display list, avoid copies

TODO: Optimize _show_merge_list to use reference comparison more
instead of == comparison.
depgraph.display(): handle reverse for --tree

This factors --tree logic out of the calling code, and allows
optimization of _show_merge_list to use reference comparison instead
of == comparison. Also, deprecate the unused depgraph.altlist()
"reversed" parameter, due to builtin name collision.
treewalk: skip CHOST warning for binary packages

The CHOST of a binary package does not necessarily match the make.conf
setting, especially if ACCEPT_CHOSTS is configured to match other CHOST
values.
portage.package.ebuild._config.UseManager.UseManager.getUseAliases(): Accept pkg argument of type str.
portage.dbapi.dbapi._match_use(): Use _emerge.Package.Package._iuse.get_real_flag().

It fixes support for USE aliases in:
  best_version
  has_version
  emerge --keep-going
  emerge --resume
cache/template.py: call self.sync() from __del__

This allows portdbapi.portdbapi_instances to be eliminated, which is
nice because we no longer has to be so careful to avoid memory leaks
involving this variable. It was not just annoying for portage
internals, but also for any API consumers that needed to create/destroy
many portdbapi instances.
_iter_match_use: construct _pkg_str instances

Now _match_use does not have to construct them itself.
make portage way more silent