disable observers without cross-thread side effects

The current implementation of enabling/disabling observers has side effects into other threads.
I understand that the set of observers per model should be global, but disabling an observer is usually done for a specific reason and a specific scope.

When doing this:
```ruby
    Heisenberg.observers.disable :uncle_frank do
        #code with observer disabled
    end
```

Other threads using the Heisenberg model will have the observer disabled until the block is done with it.

This pull requests doesn't change the global behaviour of observers, only the disabling/enabling is per thread.