Fix problem with new DCR constructor.

Coverity found a valid problem with the new DCR constructor that cannot
use the dev variable as that is a non initialized variable in the
constructor so use a proper local error buffer.
Change the socket constructors.

As all BSOCK_XX classes are a derived class of BSOCK it makes more sense
to initialize the shared members in the BSOCK constructor. As on
creation of a devived class the base class constructor gets called
anyway this will work nicely. We also don't have to intialize everything
to zero as the BSOCK class is a derived class from the SMARTALLOC class
and as such the constructor of that class will initialize the memory to
zero.
Fix problem now we use call a real constructor for the DCR.

We can no longer use the side effect of an assignment calling a
constructor to fill two variables so do it in two steps.
Initialize m_fd in the base DEVICE class.

As all device classes are derived classes of DEVICE we can initialize
the members of the base class in the constructor of the base class as
that is called anyway as part of the instantiation of the derived class.