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.
So, `populate_framebuffers()` does _nothing_ besides casting and calling this new function on the casted thing. Why not removing `populate_framebuffers()` completely?