Observe options for all of process

There is a pretty major bug in the implementation of the options.

We add `:allow_empty` at the class level and when we delete it we are deleting it at that level too. The effect of this is that if I have two objects of the same class and I run `valid?` on both then only the first one will have the `:allow_empty` option