What you describe already exists to some extent, for example in AutoWEKA, and is being researrched actively (e.g. challenges like Chalearn's AutoML).
This is usually considered in the subfield of hyperparameter optimization. Software packages like Optunity, Hyperopt and ParamILS can be used to automatically optimize hyperparameters for a given approach and choose which approach happens to be the best. That said, such optimization problems are not trivial and usually it takes a long time to automatically obtain the best model (or close to it).
You can find an example of using Optunity to automatically determine the best learning algorithm and optimize its hyperparameters at http://optunity.readthedocs.org/en/latest/notebooks/notebooks/sklearn-algorithm.htmlhttp://optunity.readthedocs.org/en/latest/notebooks/notebooks/sklearn-automated-classification.html