Implement options binding using setDomNodeChildrenFromArrayMapping so that the options don't need to be rebuilt each time it's updated.
Clean up options tests: create helper function for common "expects"; and remove unnecessary reference to "value" binding in one test.
Fix three issues with new options implementation:
Should not include the caption if the options value is null
Should allow the option text to be given by an observable and update it when the model changes without affecting selection
Should retain selection when replacing the options data with new object that have the same "value"
Use element.selectedOptions if available.
fixes #897: slight change to optionsCaption so that a blank caption will work (without having to wrap in observable).
Merge pull request #818 from SteveSanderson/818-options-using-editDetection

options bindingHandler rebuilds the entire select-element when changing one array element