Dispose of graphics resources deterministically

#5923 is back.

Speculative fix for #5116 by implementing IDisposable on Texture, FrameBuffer and VertexBuffer rather than relying on the finalizer to do the work since the non-determinism of finalization means these resources could be hanging around for an unbounded length of time before being released. I don't have any particular proof that this will fix the out-of-memory issue, it just seems like it could be a possible cause.

To verify, you can stick some console logging in the finalizers for these methods. On bleed you should notice a lot of activity as you load assets (loading, switching mods, choosing maps, starting & ending a game). This PR fixes all but one inconsequential leak as far as I can tell (the leak is the static SheetBuilder in SprintFont, but since the textures are needed forever it hardly matters).
Autoformat was correct on this one, it's nested because it's part of the using statement. I've removed the extra newline between the two so hopefully its less disjointed.