SoundManager

once a sound is played,

- if the sound entry in the sounds dictionary is a class , it is instanciated and given back to sound[id] so it will no longer be instanciated.
- if the sound entry in the sounds dictionary is a Sound object already then we play it.
- if the sound entry in the sounds dictionary is a string we start loading it in a queue -
once these are done loading, we play them, remove the entries from the queue, put them in currPlayingSounds and put the resulting sound object in sounds[id] as well.

now if we try to play an already fully loaded sound, it will not try to re-instanciate it nor reload it.