Rearrange includes to improve compile times.

This also allows for memory leak checking on MSVC by having include
surrounding Qt headers, which break if you have a macro define new
to be something which tracks line information.
No, that's a bug. I haven't run it in the leak detection mode, so it hasn't failed to compile due to this recently.