Replace CLBlockObservation with a simple observer object

The observer object is a better method for maintaining the state of the observations and doesn't have any magic in it.