Audio updates

This is an update to how audio is handled:
* Moved the audio context out of each brick and into the app itself
* Bricks now use the app's audio context (if each brick uses their own, we'll run into limits)
* Added load sound and play sound methods to the ceci element base so each brick can just make two simple calls now
* Ported over the button and auidio components to this new style

Fixes #1972


probably not too important, but I thought this wasn't supposed by IE