[GCC] Ugly workaround to get GCC compiling

Apparently default non-const references are illegal, despite MSVC taking
it just fine.  So, had to create overloads instead.
[C++11] Make some QHashes const with initializer lists
[C++11] `foreach` to `for`, const/const& where possible

Qt foreach macro is unnecessary in most cases with C++11's new
range-based for loop syntax.  **However**, foreach makes a copy and for
does not, and for cannot change something it is looping over.  I left
foreach loops in some places.

I also moved to const and const reference where possible, which are good
optimizations.
[C++11] Use initializer lists and uniform init where possible
[C++11] Much better syntax for signal/slots (part 1)

Got the biggest files so far.  There will be a few more chunks of them
to do.  The C++11 syntax Qt has for signals/slots is so much better and
more readable.
[C++11] New signal/slot syntax part 2
[C++11] Replace NULL/0 with `nullptr`
[C++11] Some fixes for GCC

I removed the "symmetric" disconnects also because it actually seemed to
break the connections.  I am still not sure if one disconnect() is
working either.