Sync highlighting on WinEnter

Every buffer has a variable that determines if bad whitespace should be
displayed or not.  The display will be synced on WinEnter.

I expect the common use case is to either permanently view them or not.
So this should work out fine in most cases.  A window-specific variable
would be initialized with the default on each split which is presumably
not what is wanted.
Refactor handling of the start-up state

Obtain the default during buffer-init instead of turning the display off
later.  Rename accordingly.
Incorporate &modifiable into buffer initialization

This will now also sync toggling of unmodifiable buffers
Treat b:bad_whitespace_show as display state

Remove the force argument from some functions.  Show/Hide does now
always change the display state.  Previously, it was used do
differentiate an explicit change request by the user from window/buffer
setup, but the buffer setup is now only done once and windows are synced
on enter.