merge branch
Make buildable with GCC in Linux

* replace GetThreadID with std::this_thread.getId()
* name all anonymous structs and unions that contain non-trivially constructable objects
* made default constructor for big endian type noexcept to make it work with std::atomic
* move instantiated specialized template function members ouside of the class definition to comply with the standard
* added default instantiation for template parameter "=nullptr"
* used the C++11 standardized thread_local instead of the __declspec(thread)
* added transitional definitions to bridge the microsoft specific calls (compare and exchange and aligned alloc)
* removed cyclic dependency between Emulator->CPUThreadManager->CPUThread->SMutex->Emulator->...
* fixed some instances of indentation by space instead of tabs
* surrounded some unused code with an #if 0 block to make sure it doesn't compile
merge newer changes
fix small merge mistake
fix small type mismatch
more merge fixes, I should really compile it before submitting a pull request
make things compile under windows again, there's still some ugly ifdefs
I'd like to get rid of
Merge pull request #83 from Bigpet/master

Make buildable with GCC in Linux