sinksmtp: reform control rules file handling again and tune up docs

The previous stuff was irritating and involved too many options. Now
we can specify multiple control rule files by just comma-separating
them, which is much nicer.
sinksmtp: reject 'file:' in rules

If you try to specify a file explicitly but don't provide a filename,
it's now an error. Before things would just sort of swallow it silently.
sinksmtp: recognize more garbage email addresses

Addresses with '..' or '@@' in them are now spotted and considered
garbage.

Also a minor code cleanup in list loading.
sinksmtp: suppress duplicate warning messages from per-connection things

Since we load rules and so on on every connection, we don't want
to complain about eg a parse error on every connection; that could
flood logs. Now we explicitly suppress duplicates. This prompted some
additional error warning messages.
sinksmtp: switch the parser to returning 'error' instead of '*string'

This is one of those 'learning through experience' things. Returning
'*string' as the error/error indicator was a mistake; the code should
return 'error' and make up errors with error.New(). Now everything works
nicer (and in a more 'standard Go' way).