demos: modularize windowing backend
Instead of compiling all variants of all demos, load the best backend at runtime. Also split off the nuklear implementation into a separate library to avoid excessively recompiling it, something that should have been done ages ago. This is technically a functionality downgrade, since it doesn't allow users to choose which backend to use (Vulkan or OpenGL), instead always picking the "best" backend. But that's mostly interesting for developers, not users, I think. I'll probably implement some mechanism for making that selection at runtime, when I actually need it. As an aside, I also renamed 'image' to 'sdlimage' since I think the name fits better - the only reason I didn't in the past was to avoid confusion with the suffix.
Showing with 210 additions and 66 deletions