fixes from Jpablon

Jpablon sent me a few bug reports and fixes, and I've commited them.

* fix: gcc crashing the client

should fix the "linux bug" when gcc-compiled binaries crashed the client, when -O3 was chosen. The patch does not fix the bug, since it is most likely a compiler regression. Instead, the patch reduces the optimisation level for the affected code parts (3 functions) to -O2.

* filter reserved windows filenames

using maps with (on windows) reserved filenames like COM1 and PRN crashes windows clients - therefore those have to be disabled for all platforms. 

* substitute non-portable printf format string

some compilers on some platforms do not support the printf format "llx" for "print unsigned long long int as lowercase hexadecimal". I substituted it with a function that creates the hex string itself - which will work on all platforms and compilers. 

With the next protocol bump, this should be rewritten completely, to take advantage of other, already existing functions in crypto.cpp.

*  reinstate gcc as default compiler

if there are no other problems with gcc than the one fixed in commit 02fc97f, it should be ok to set gcc as default again.