Enabling translation of CamelCased properties to hyphenated option names

This way we can have a clear interface for all sorts of options. Currently we can access common options as `$this->options->list` and `$this->options['list']`, but complex names such as `--read-only` can only be accessed using `ArrayAccess`.

With this change we can now also use `$this->options->readOnly` safely :)