Refactor options

* Don't accept options on the initializer
* Accept options using #with_options instead
* Don't raise when using an invalid option, just fail