demmt: rewrite ioctl and buffer handling code

This commit:
- splits struct buffer into 3 structs: gpu_object, gpu_mapping and cpu_mapping,
- rewrites ioctl handling code,
- adjusts rest of the code to use new structs,
- adds code which deals with gpu-side copies - demmt can now track pushbuffers which
  are never mapped on cpu side