[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.
I think some simplification can be done here (maybe using some enum to specify all the cases so they don't overlap), but this is just as good as what we already have, so all good.