b=991533 move sample rate limits to WebAudioUtils r=padenot

Also change WebAudioUtils from a class to a namespace, so that constant
variables can be defined inline with internal linkage.

static class variables cannot be defined inline because this violates the one
definition rule, even though some compilers may not notice.

--HG--
extra : transplant_source : %9F4%2Ct%BA%D2%BD%8A1Xev%92%C0%A1%AD%88IH%BF
b=991533 limit OfflineAudioContext to the same sample rates as AudioBuffer r=padenot

OfflineAudioCompletionEvent needs to use AudioBuffer for its output,
and so the AudioContext should run at the rates supported by AudioBuffer.

--HG--
extra : transplant_source : %F2%A0%90%E6%DD%21%15%CDBa%F4%24%93%22%FA%A3%D8%12KU
b=991533 throw exception from AudioProcessingEvent buffer getters when allocation fails r=ehsan,bz

--HG--
extra : transplant_source : C%60%E5f6%1D%D3%0F%D6%0B%9CV%A6%AD%C5%5D%E9%9B%C6%BD
b=991533 limit AudioBuffers from decodeAudioData to the same sample rates as createBuffer r=ehsan

The numberOfChannels array on AudioBuffer is now an infallible array, as this
is considerably smaller than infallible channel data array allocations in
AllocateAudioBlock and similar to channel data pointer array allocations in
AudioChunk.

--HG--
extra : transplant_source : C%29_%13%9C%9C%A1%E1%A3%E8%C9_%93%11%85lM%FC%7E%BC
b=991533 limit AudioBuffer channel count r=padenot

--HG--
extra : transplant_source : %28%F0%2Cc%FE%60%B3%EE%A0O%3F%E6%C4%C4%F9%88%1C%E3%89%09
b=990868 limit ChannelMergerNode output channel count r=padenot

--HG--
extra : transplant_source : 5S-%40T%8E%8B%F8%B4W%1F%B3%BA5O%83%BF%044%23