We should also signal whether or not a returned plan is guaranteed to be
optimal. This doesn't have to be done with the exit code (although this is one
option, of course). An alternative would be to use the regular output for this.
The search methods and heuristics need to grow additional methods like "is_safe",
"is_optimal" etc.
Once this is provided we should exit with EXIT_UNSOLVABLE where applicable.