Throw exception if waiting on ObjectPool when rundown is called

A deadlock happened if rundown was called while a different thread was waiting for an object from the ObjectPool
Add test to verify ObjectPool rundown deadlock
Fix typo.
Make RundownWhileWaiting test more robust
Merge pull request #216 from leapmotion/fix-objectpool

Fix potential ObjectPool deadlock
Minor comment updates
Merge pull request #217 from leapmotion/fix-comments

Minor comment updates
Fixing Windows build warning
Merge pull request #218 from leapmotion/fix-msvc-warning

Fix Windows build warning
Fix unit test which uses an invalid unowned lock release

This pattern might work on certain systems, but it's actually not correct to release a lock from anywhere except the thread which originally obtained that lock.  For synchronization in this fashion, a barrier or a conditional variable is preferred--a conditional variable is used here for portability.  Unfortunately, in this case, a total guarantee that the async is waiting is not possible--a short thread sleep is used instead to provide a one-sided error guarantee in this test.
Merge pull request #219 from leapmotion/fix-rundowntest

Fix unit test which uses an invalid unowned lock release
Squashed 'cmake-modules/' content from commit 29bed22

git-subtree-dir: cmake-modules
git-subtree-split: 29bed2226f33a6c2987f3e1bd309e6fdb6c8850f
Merge commit 'ce5baef46f9ba6045edb3c9323227b15fc4dc2f4' as 'cmake-modules'
Removed old CMakeModules folder
replaced ADD_MSVC_PRECOMPILED_HEADER with add_pch
added the new cmake-modules folder to the cmake modules path, included AddPch and ConditionalSources at the root level.
replaced MSVC_DISABLED_FILES with add_conditional_sources
added some usage of the conditional_sources functions