Refactor audio.add, audio.supports

There was a lot of duplicated code when we load audio files; this abstracts that out into a new function audio.create.

It also improves the way we check for supported formats so that it is created if and only if we check for support and we don't have the previous cached result.  This fixes a bug where Crafty.load tried to check for audio file support when that information hadn't been cached.
Implement multiple audio channels

To allow the same sound resource to be played multiple times without resetting, create a bank of audio elements that we use as different "audio channels".  This is pretty basic; there's probably more functionality we could add here.
Handle case where no assets are loading