WIP: New maestro mapping structure

This commit makes the `Maestro.mapping` attribute smarter. From now one,
every time you call it, it will store the data in this new format:

  >>> maestro.file_package('a (>0.1.5, <0.1.6)', dependency_of='b (== 0.1)')
  >>> pprint(maestro.mapping)
  {
      'a': {
           '>0.1.5,<0.1.6': {
               'dependency_of': 'b (== 0.1)',
               'data': None,
           },
      },
  },
Add the Maestro.get_data() method

Our internal data structure (`maestro.mapping`) is getting complex. This
new method just finds the data saved by the dependencer for a given
package spec.
Add Maestro.best_version() method

This method will choose which version among all the requested ones
should be installed.
Change the Env class to use Maestro.best_version()