use listchars to better display whitespace

This commit uses listchars to better display whitespace and hard tabs.
It also adds a key mapping (\s) to remove trailing whitespace.