Re #8326. Get the run number from the unprocessed workspace.

This tries to extract the run number from the workspace returned by
ILiveListener::extractData() instead of the final workspace that results
from whatever workflow the user specifies. In the latter case, the run
number may not be available because the workspace is not of the assumed
type, or it may not have been passed right through the analysis. This way
improves our odds. It would still fail if, e.g., a WorkspaceGroup is passed
back.

Probably a better implementation for later would be for this to be available
in the ILiveListener interface.
Re #8326. exec was public for a reason.
Re #8326. Add some testing.
Merge remote-tracking branch 'origin/bugfix/8326_live_run_number'