interpret stderr and raise custom exceptions

1.  Detects failed authentication message from Windows systems
    and raises SatoriSMBAuthenticationException
2.  Detects error message stating that the user has been locked
    out of a Windows system and raises SatoriSMBLockoutException
3.  Detects error message stating shared access flags are
    incompatible on a Windows system and raises
    SatoriSMBFileSharingException

Consolidates (DRY) the logic which listens to command output in
smb.py so that the custom Exceptions mentioned above can be raised
if any of the known error output is encountered.

Unchanged:  A non-zero exit status with an unknown error message
            raises a SubprocessError including that error message.

Previously, all error messages corresponding to non-zero exit codes
were "unknown".

Closes-Bug: #1389034
Change-Id: I157adfe9034177f7975473ff96f29fc17c6ad12b