server: fix abort when terminating display on wl_event_loop destroy
The destruction of wl_event_loop may trigger a call to wl_display_terminate() in user code. This would fail with EBADF because we close terminate_efd earlier in wl_display_destroy().
Close the FD after wl_event_loop_destroy() to avoid this issue. Add a test for this behavior.