[AE/osxsink] refactor the device enumeration for the osx sink

This refactors the device enumeration in the osx sink out into its own class and unrolls that big for loop a bit. This is all for better readability and code cleaning.

This should not alter the behaviour [tm] but now also shows multistream devices as there own device (adding Stream <number> to the extradisplayname) - those are non working yet. Also the format of the devicename saved in guisettings.xml changes (:stream<number> is added).

Thats why i added the settings update mechanism which should migrate old settings.

This is the preparation for finally fixing multi stream devices and multi source devices (like different airplay targets) which will be done in a seperate PR once this one is confirmed.

@jmarshallnz - sorry i had no chance to split this huge thing up into something which is reviewable :( - mostly its copy paste from the former enumeration loop. Maybe the doxy in the enumerator class can calm down the gods a bit.
Assuming this defaults to false in caStreamInfo, you could just pass info.hasPassthroughFormats into hasPassthroughOrDigitalFormats saving the temporary.

You could do so with info.isDigital I guess, if you then or'd it with isDigital from the device.