Fix a double-free() issue in discuss server

In case when the client tried to switch from an existing meeting to
a non-existing one, the client freed the memory from the previous
meeting, but forgot to null the pointer, which caused the error handler
to attempt to free it again upon discovering that meeting did not exist
and cause the server to crash.
Make dsmail always retain default fields

- dsmail should retain the default fields, as disk is cheap
  (Trac: #1114)
- Add -x option to _not_ retain default fields
- Change the -A, -d, and -D options to not be toggles if
  specified multiple times.