Introduce fences for N:M completion variables [v2]

From: Chris Wilson
Date: Sun Jul 17 2016 - 08:59:04 EST

Peter Zijlstra gave a lot of feedback and thanks to him, I think both
the function names and docs are a lot more sane. There is also a good
consensus on renaming dma-buf's struct fence to be struct dma_fence,
allowing for use of the cleaner name for the core struct.

A quick overview of a fence is that it is a struct completion that waits
on multiple events (rather than just one).