Setup whitespace management.

Use whitespace-cleanup-mode to conditionally enable whitespace
cleanup (iff the file was initially clean).

Use whitespace-mode to decorate problematic whitespace.

Eanble these things in text-mode.
Set up basic programming mode support.

Use the generic programming mode hook to enable whitespace modes (see
ealier commit) and flyspell-prog-mode (if ispell is available, and
smartparens mode.