memory: make PlaneHandle and BufferHandles 'static

Handles should not any non-static reference. Make them explicitly
'static so we can remove that constraint from error types using them,
which require this constraint in order to set the Error::source() with
the #[from] macro.
diff --git a/src/encoder.rs b/src/encoder.rs
index 4260303..256a1a2 100644
--- a/src/encoder.rs
+++ b/src/encoder.rs
@@ -273,7 +273,7 @@
 }
 
 #[derive(Debug, Error)]
-pub enum GetBufferError<OP: BufferHandles + 'static> {
+pub enum GetBufferError<OP: BufferHandles> {
     #[error("Error while dequeueing buffer")]
     DequeueError(#[from] DequeueOutputBufferError<OP>),
     #[error("Error during poll")]
diff --git a/src/memory.rs b/src/memory.rs
index f35130c..d3fd033 100644
--- a/src/memory.rs
+++ b/src/memory.rs
@@ -66,7 +66,7 @@
 
 /// Trait for a handle that represents actual data for a single place. A buffer
 /// will have as many of these as it has planes.
-pub trait PlaneHandle: Debug + Send {
+pub trait PlaneHandle: Debug + Send + 'static {
     /// The kind of memory the handle attaches to.
     type Memory: Memory;
 
@@ -86,7 +86,7 @@
 }
 
 /// Trait for structures providing all the handles of a single buffer.
-pub trait BufferHandles: Send + Debug {
+pub trait BufferHandles: Send + Debug + 'static {
     /// Enumeration of all the `MemoryType` supported by this type. Typically
     /// a subset of `MemoryType` or `MemoryType` itself.
     type SupportedMemoryType: Into<MemoryType> + Send + Clone + Copy;
diff --git a/src/memory/dmabuf.rs b/src/memory/dmabuf.rs
index 57ea466..aefbad6 100644
--- a/src/memory/dmabuf.rs
+++ b/src/memory/dmabuf.rs
@@ -22,7 +22,7 @@
     }
 }
 
-impl<T: AsRawFd + Debug + Send> PlaneHandle for DMABufHandle<T> {
+impl<T: AsRawFd + Debug + Send + 'static> PlaneHandle for DMABufHandle<T> {
     type Memory = DMABuf;
 
     fn fill_v4l2_plane(&self, plane: &mut bindings::v4l2_plane) {
diff --git a/src/memory/userptr.rs b/src/memory/userptr.rs
index de3c62f..c477fba 100644
--- a/src/memory/userptr.rs
+++ b/src/memory/userptr.rs
@@ -25,7 +25,7 @@
 /// v4l2_buffer` must be set before doing a `QBUF` ioctl. This handle struct
 /// also takes care of that.
 #[derive(Debug)]
-pub struct UserPtrHandle<T: AsRef<[u8]> + Debug + Send>(pub T);
+pub struct UserPtrHandle<T: AsRef<[u8]> + Debug + Send + 'static>(pub T);
 
 impl<T: AsRef<[u8]> + Debug + Send> From<T> for UserPtrHandle<T> {
     fn from(buffer: T) -> Self {
@@ -33,7 +33,7 @@
     }
 }
 
-impl<T: AsRef<[u8]> + Debug + Send> PlaneHandle for UserPtrHandle<T> {
+impl<T: AsRef<[u8]> + Debug + Send + 'static> PlaneHandle for UserPtrHandle<T> {
     type Memory = UserPtr;
 
     fn fill_v4l2_plane(&self, plane: &mut bindings::v4l2_plane) {