Function useSoftenedWaitable

Derives a waitable from another waitable where the last known value of the original waitable is remembered until a new value is available. This is useful for async waitables that are frequently reset where the last known value is good enough, for display purposes for example.

Hard resets on the softened waitable clear out the remembered values.