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.
They save the values of new, malloc, realloc and free macros on a stack (hence, push_macro pragma) and undef's the macro in the 'pre' header and then they pop the values back in the 'post' header. It's fairly simple, overall.

Basically, it prevents Qt from seeing the macros that will be used to add file/line information to the memory leak detection calls.