fix null options (for 4.2)

* fix: $options can be passed as null from View_Button, so `$options ?: array()` now helps in this case
* readability: merge default options with passed options before using them in chains