Handle validity of service client differently

For a non-persistent service client, isValid is always true so we
can no longer use this to determine if the widget is active. Instead,
we'll just keep track of the validity separately.
Fix context menu on disabled button widget

QWidgets ignore all events while disabled.