Split Justify module out from Diagnostics
Sort RoleMap in ascending order

We had reversed compare function, and then did a List.rev at the end to
fix it up!
Removed abstract Solver.diagnostics type

There's no point using an object type for result if noone else can
implement it due to diagnostics being abstract.