New caption selection mechanics for SelectWidget and MultiCheckboxWidget

Old was: options OR widget.get_option_caption (applies if no option exists)
Now is: options AND widget.get_option_caption (applies if exists)
Empty elements are now passed to widget.get_option_caption (it's up to user to decide how to render 'em)