Add IInternal/PublicDisposableService
Plugins are exposed interfaces that are not inherited from IDisposable, but services implementing plugin interfaces often implement IDisposable. Some plugins may try to call IDisposable.Dispose on everything provided, and it also is possible to use using clause too eagerly while working on Dalamud itself, such as writing using var smth = await Service<SomeService>.GetAsync();. Such behaviors often lead to a difficult-to-debug errors, and making those services either not an IDisposable or making IDisposable.Dispose do nothing if the object has been loaded would prevent such errors. As ServiceManager must be the only class dealing with construction and disposal of services, IInternalDisposableService has been added to limit who can dispose the object. IPublicDisposableService also has been added to classes that can be constructed and accessed directly by plugins; for those, Dispose will be ignored if the instance is a service instance, and only DisposeService will respond.
In addition, DalamudPluginInterface and UiBuilder also have been changed so that their IDisposable.Dispose no longer respond, and instead, internal functions have been added to only allow disposal from Dalamud.