Dereferenceable mutex race condition

Dereferenceable module lazy initializes its mutex without any other lock, opening the possibility of a race condition and visibility issues.
To fix this, we have to manually init the mutex in every class that includes it.
I think this solution is not very clean and is a little error prone, but AFAIK there isn't a better way to initialize module instance variables... maybe we can change the `mutex` method to raise an exception if the var is not set.

In this commit `set_deref_options` has been refactored a bit removing unnecessary code