_show_model_changes: silence by default

This lets the first line of output be suppressed (as it was previously in
update and write) when no changes at all need to be printed.
use _show_model_changes in mbsync
remove old _showdiff

Totally replaced now, including tests! Woohoo.
comment out some skipped tests

The *only reason* I'm doing this is so that the unittest output looks
prettier. I am pretty sure I have actual OCD. :flushed:
move show_model_changes to ui package

This makes it more naturally reusable for plugins.