Thread safe observers

Ruby `Observable` module is not thread safe, so every class using it is exposed to potential concurrency problems.
Two thread safe observer sets have been added, using different strategy: a copy-on-write approach and a simpler copy-on-notify.
Both use the open-call pattern for notify to avoid deadlock