refactor install_options methods to reduce duplication a little

With this patch, the various install_options methods are now generators,
which yield zero or more InstallOptions instances which should be
combined. The reason for this awkwardness is that we cannot pre-combine
InstallOptions inside these methods and return the combined result,
because InstallOptions.combine_with() is not an associative operation.

Then all the different parts of code which need to produce the final
combined install options will collect them from various places and then
call InstallOptions.reduce() to combine the entire sequence in one go.

Change-Id: I3a86dced9d904a159dc8061c9d66b4eb0a92b4ce