introduce get_solver_name() to pick a solver

glpk no longer needs to be hardcoded as the default solver in every
problem definition. The default solver in the keyword argument can be
None, and can call get_solver_name() to get a solver. This can return a
different solver if glpk is not installed.

get_solver_name can be passed qp=True to specify a quadratic program or
mip=True to specify a mixed integer program
small bugfix to get_solver_name