Cleanup:
* Remove volatile keyword, it is of no use at all. [1]
* Remove the enable_if stuff. It had no use either.
The most likely explanation why the enable_if stuff was there is that it
was used as something like a STATIC_ASSERT to verify that sizeof(T) is not larger
than sizeof(void *). This check however is not just misplaced in a place where we
already use a lock, it isn't needed at all, as gcc will just generate a call to
to the runtime if it compiles for platforms that don't support atomic instructions.
The runtime will then most likely use locks.
Code style fixes:
* Prefix name of the mutex
* Line everything up nicely, where it makes things look nice
* Filling \ continuations with spaces is code style rule
Added operations on the atomic var:
* Compare and swap
* Swap
The second point of the cleanup also fixes the Android build of the next commit.
[1]: http://stackoverflow.com/q/2484980
* Rename everything.
* Strip J prefix.
* Change UpperCamelCase functions to lowerCamelCase.
* Remove global (!) semaphore count mutex on OSX.
* Remove semaphore count getter (unused, unsafe, depended on internal
API functions on Windows, and used a hack on OSX).
* Add `Atomic<type>`.
* Make `Thread` handle thread names.
* Add support for C++11 multi-threading.
* Combine pthread and win32 sources.
* Remove `ThreadStarted` (unused, unneeded).
* Move some includes from the headers to the sources.
* Move all of `Event` into its header (allows inlining with no new includes).
* Make `Event` use `Semaphore` (except on Windows).
* Move some porting functions into `Thread`.
* Integrate logging with `Thread`.
* Add threading test.