bcmxcp: Return more specific error codes from instcmd

Use the available STAT_INSTCMD_FAILED and STAT_INSTCMD_INVALID as return value
from the instcmd method when applicable, instead of always returning STAT_INSTCMD_UNKNOWN or -1.
bcmxcp: report upsdrv_comm_good at successful execution of instcmd
bcmxcp: Let upsdrv_shutdown call instcmd for shutting down

To avoid code duplication between upsdrv_shutdown and instcmd, let the upsdrv_shutdown method
first try to issue a shutdown.return instcmd, and then proceed with shutdown.stayoff if the
shutdown.return failed. This seems to be in line with what the usbhid driver does.
bcmxcp: Fix outlet number for outlet.x.shutdown.return if more than 2 outlets
bcmxcp: Define byte for choosing which system test to run in header file
bcmxcp: Use one fuction to decode command execution status in all places

To avoid duplicating the logic which checks the status of command execution at UPS,
add a new function which contains the check, and use that function whenever we
send a command to UPS and get status back from UPS.
bcmxcp: Add test.panel.start instcmd support
bcmxcp: Let decode_instcmd_exec also handle short read from UPS