Made base_distribution virtual and added generic_distribution
Added slave to global_settings

It is now started lazily.
Display prompts on stderr, like the Python does
Only require a command if it was selected
If distribution support is missing, get the info from the slave

Avoids needing to move the whole solve to Python.