Observable Shared Specs and Block Observer

This PR began life as PR/Issue #62, "CopyOnNotifyObserverSet questions". @brainopia began the work to update various `add_observer` methods to accept a block in lieu of an instance of an observable class. This was a great idea but he noticed some inconsistencies in the different implementations of this method. @mighe suggested that a set of shared specs for `Concurrent::Observable`. This PR merges the changes from @brainopia and implements the shared specs.

Thoughts?