Release backend on teardown
Mutter still relies heavily on singletons such as its MetaBackend.
For that, the backend implementation has a meta_init_backend() function which is called at startup from meta_init(), which creates the desired backend and sets the singleton which is returned by meta_get_backend().
Unfortunately, that means that the backend is never actually freed, and all the code from the backend finalize function never actually get called.
This MR aimed a fixing this (without removing the use of singletons).