Sync queue fixes

These changes fix a couple of things in the `sync*_queue` classes:
- `wait_*` member functions didn't wait.
- relevant single and multi-threaded tests added.
- multi-threaded tests were simplified a little and now only test the non-deprecated functions.
- `close()` was called in several places on throw when it should have the strong guarantee.
- `move_if_noexcept` is needed for proper exception safety guarantees. Waiting on https://github.com/boostorg/move/pull/1 and then a few `/*_if_noexcept*/` simply need uncommenting.