Fix check when multiple optimal solutions exist

Fix #9

Basically, we use the following checklist:
  1. Check final objective function value `fx`.
  2. Check final argument bounds `x`.
  3. Check final constraints.
  4. If any of the previous checks fail (i.e. solver failed): check final `x` to provide some extra information to the user.