Re-enable CPU profiling.

Add Profile field (type interface{}) to options.SolveOptions. It is either
a string (if --profile was specified) or nil (if it wasn't).

CPU profiling will be removed in a later version closer to release.
Fix Solution.HasViolations.

Solution.HasViolations now loops through the attendance matrix.

Fix CPU profiling.
Solution.AssignmentQuality should do less iteration in practice.