Future with thread safe observers

Standard Ruby Observer module is not thread safe and it has been replaced with a thread safe observer set.
I preferred a copy-on-write set because I don't expect many observers to register, but we can add an option to the constructor to let the user choose the implementation