[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.
ATM this could be const std::string &.  Dunno if it always will be.  No big deal.  You probably want these functions const though?