Adds configurable semaphore synchronization

RM10494

Updates quark/ipam.py to have configurable sempahore synchronization
after testing proved favorable in multiple environments.
So, `synchronized` is a function that takes an argument that returns a decorator. Instead of functools, it could be cleaner to use a class with `__call__` defined. Just a minor nit.