Added comments to sync.h to make it easier to understand the macros

Having taken me a while (i.e. more than the couple seconds it should take) to painstakingly decipher all the synchronization macros, I decided to add some comments to sync.h explaining in simple terms what the macros really translate to once you remove all the excess nonfunctional debug code.

I welcome all of you who have more experience with the code to chime in and point out where I'm going wrong, what to add, and how it can be improved.

I fully support using debugging frameworks - but let's at least clean this up so that it's both easy for a human to read AND easy to set up debugging options - for people who haven't necessarily been dealing with this stuff daily for months.