Add framebuffer object and monitor object

This implements the framebuffer and monitor object
We can introduce a definition for non-linux, if it's not defined:
```C
#ifndef O_CLOEXED
#define O_CLOEXEC 0
#endif
```

The question is: does this belong here, or in an utility header (like `macros.h`)? I think it's the latter one.