Switched the validation call 3 times. There's now a lot of bugs - will
need to debug later, esp. the gem_offset. It doesn't have a test as of
now and is marked as `unsafe` as it doesn't seem to function.
We thought that libc::ioctl would return the result of the ioctl
syscall, but instead it returns -1 on failure and sets errno.
GemHandle shouldn't be clone, since dropping any cloned instance will
invalidate all instances.
Additionally fixed a bug in uapi::i915::find_fd where it was using a
non-owned RawFd and then closing the file descriptor at the end of the
scope of the closure.