Append drop-down to <body> instead of adjacent to main control

This avoids the drop-down becoming clipped by or affecting the size of
whatever container(s) the main control is inside.
Support overriding the text shown when option is selected

Normally, when an option is selected, the option's text is displayed in
the main control.  This commit adds an option 'generate_selected_value'
whose value should be a function that receives the selected option as an
argument and should return either { text: <string> } or { html: <string> }
as the value to be displayed.
Fix searching somewhat

Only search an option's text value, not its HTML value, which can lead to
search hits in the markup.  Also only switch to displaying the "search
text" (i.e. whatever we're searching against per option) when there's a
search ongoing.
Support overriding an option's text / HTML value

If present, use the 'data-text'/'data-html' attribute values instead of
the option's actual text/innerHTML content.  This allows an option's
displayed value to be styled arbitrarily when the select is converted to
a Chosen widget, while leaving the option's text as something that makes
sense in a plain select widget.
Increase space around the "single deselect" control

If the width of the main control is set to "auto" and deselection is
enabled, the deselect control (an "X") ends up right next to the selected
option's text in the main control.  With this adjustment, there's roughly
the same amount of space between the "X" and the text as there is between
the "X" and the downwards arrow to its right.
Add task for copying files committed in Critic's repository