sync: allow async waits to be canceled

In order to allow drivers to cleanly handled teardown we need to allow them
to cancel pending async waits.  To do this cleanly, we move allocation of
sync_fence_waiter to the driver calling sync_async_wait().

Signed-off-by: Erik Gilling <konkers@android.com>
Change-Id: Ifcd95648be6ec07026d67f810070a4310f099989