Split off smbclient process creation into separate class

Steps toward a proper class hierarchy. Giving the smbclient process its own
class also makes SambaDAV more robust: by putting the cleanup code in the
class's destructor, we are all but guaranteed that the cleanup will happen.
Using the fact that the object's destructor is automatically invoked when the
object goes out of scope lets us remove all the carefully placed
'smb_proc_close()' statements in favour of just dropping the object from scope.