Handle a lack of login/password information without segfaulting.

If datacopy is called incorrectly with, e.g., /dev/null on stdin, it won't
get any database login/password information.  We should print an error
message and exit instead of throwing a segfault trying to copy a null
pointer.

Rather than exiting immediately, though, just try to connect to the
databases without a username/password, because hey, you never know.

Bug-Debian: http://bugs.debian.org/715785
Fix wrong getopt() option strings so that -d arguments are parsed correctly.

The code treats -d as an alias to -D, but the trailing colon is missing in
the getopt string, which means getopt doesn't return the next argument in
optarg and the code segfaults instead.

Of course, as a result this option has never worked, and it's not documented
in usage, so it would be an equally reasonable fix to drop support for -d
as an alias.

Bug-Debian: http://bugs.debian.org/715697
Bug-Debian: http://bugs.debian.org/715698