qsoptex: Move constants to enum-like classes
qsoptex: Fix bug where solve() throws exception if not-optimal

The solve() method tries to read the solution even if no solution
was found. This resulted in an exception being thrown. Instead,
solve() will only read the solution if status is OPTIMAL.
README: Clarify Python module code example