Refactor mode line handling in error list

Don't update the mode line explicitly.  Instead, just set an appropriate
mode line construct when entering the mode.  revert-buffer resets the
mode line anyway, so any dynamic content will be properly updated.
Don't re-highlight if no error list updated occurred
Explain rationale of permanently local variable

[ci skip]
Make n/p move by errors in error list

Previously, n/p would move by lines, which wasn't ideal in face of
multi-line error messages.
[Fix #452] Make n/p navigate to error source in error list
Jump to the error when pressing RET in the error list
Add severity property to error levels
Add function to sort errors by error level
Enable sorting of the error list
Add test cases for error comparison functions