Improve base executable discovery mechanism:

- print at debug level why we refuse some candidates,
- when no candidates match exactly, instead of hard failing fallback to the closest match where the priority of
  matching attributes is: python implementation, major version, minor version, architecture, patch version,
  release level and serial (this is to facilitate things to still work when the OS upgrade replace/upgrades the system
  python with a never version, than what the virtualenv host python was created with),
- always resolve system_executable information during the interpreter discovery, and the discovered environment is the
  system interpreter instead of the venv/virtualenv (this happened before lazily the first time we accessed, and caused
  reporting that the created virtual environment is of type of the virtualenv host python version, instead of the
  system pythons version - these two can differ if the OS upgraded the system python underneath and the virtualenv
  host was created via copy),

by :user:`gaborbernat`.
