Moved the framebuffer population to the monitor

This commit moves the populate_framebuffers to the monitor internals.
This was planned from the start and thus the code did not really change and
only the return values had to be changed.
`set_select` needs a function which takes 2 arguments.