gui: Use virtual destructors.

Gets rid of some compiler warnings (and potential leaks).

Also minor formatting.
Pragma once for headers

Also more minor cleanup
Make pngu compile as c++