This patch refactors how the compositor deals with outputs that are allocated but not needed. Previously we allowed such allocations and implicitly release them right after operations are computed. This is a weak design, so we now require developers to only allocate outputs that are actually needed and assert otherwise. The release mechanism is therefore removed.