Refactoring Maestro.best_version()

We used to save either the `path` for a package or an `exception`
instance inside of the version info for each package contained in
`Maestro.mapping`. Which is really confusing. Now, `data` is a
dictionary and has two separate keys for the each separate value;

All the places that touch this information were (hopefully) updated,
including:

 * Install.report
 * Install.run_{installer,uploader}
 * Service._worker
 * Maestro.set_data

All tests were also updated accordingly.