magit-section-siblings: bugfixes

`cl-ecase' does not support `nil' in place of a KEYLIST, instead use the
one item KEYLIST `(nil)`.  And more importantly do not modify the list
of children as stored in the parent of SECTION when returning all the
siblings (which wasn't possible previously anyway due to the other bug).
magit-section-make-overlay: new function
magit-diff-highlight: highlight trailing separator newline
magit-diff-paint-hunk: use save-excursion, cosmetics

Use `save-excursion' so that callers don't need to do it (currently
they still do).  Avoid narrowing and stop using `save-restrictions'.
Cosmetics.