Allow plugins to specify signal event reason

Currently, we have logic in the Resource.signal base-class implementation
which works out the reason string based on knowledge of some of the
signal-handling resources.  This is invariably going to be fragile, and it
won't work at all with any out of tree or contrib plugins.

So instead, move towards a model where we accept an optional return value from
handle_signal, and use that as the reason string instead.  Since no resources
yet return a reason, maintain the old logic as a fallback path, until this
gets migrated into the appropriate resources.

Change-Id: I45fdf112e6cd050bb1f4111977f653ba6440df02
Partial-Bug: #1340894
Merge "Allow plugins to specify signal event reason"