b=865241 Import the HRTF panner implementation from Blink r=ehsan

This code was copied from Blink SVN revision 153183.
(transplanted from 1e796e343ef843d890c2d58a0d52f2d09299631a)

--HG--
extra : transplant_source : %1Eyn4%3E%F8C%D8%90%C2%D5%8A%0DR%F2%D0%92%99c%1A
b=865241 remove unused HRTF code r=ehsan
(transplanted from 5ddd533fc54cba690c22235c67a70b66b45d2bc5)

--HG--
extra : transplant_source : %5D%DDS%3F%C5L%BAi%0C%22%23%5Cg%A7%0Bf%B4%5D%2B%C5
b=865241 don't try to compute a phase for group delay from the DC and nyquist components of the DFT r=ehsan

Given imagP[0] is really realP[halfSize], it doesn't make sense to calculate a
phase from placing the DC and Nyquist components in different directions.
The DC component doesn't have a phase offset and lastPhase is already
initialized to zero.

This makes extractAverageGroupDelay() consistent with addConstantGroupDelay()
and to some extent interpolateFrequencyComponents().

The effect of the bug would have been small for reasonably sized FFTs.
(transplanted from 07e1d8379a30f1b3788625becaef972a9c623e59)

--HG--
extra : transplant_source : %07%E1%D87%9A0%F1%B3x%86%25%BE%CA%EF%97%2A%9Cb%3EY
b=865241 Add Blink's frequency interpolation and group delay methods from FFTFrame to FFTBlock r=ehsan
(transplanted from 729de18aacef823caea2635a9566eedc91f8c031)

--HG--
extra : transplant_source : r%9D%E1%8A%AC%EF%82%3C%AE%A2cZ%95f%EE%DC%91%F8%C01
b=865241 always leave 20 samples of headroom when extracting group delay, removing the discontinuity at delay = 20 r=ehsan
(transplanted from 5fd2ef2d994797f52b6cc510f077c7565ec540fa)

--HG--
extra : transplant_source : _%D2%EF-%99G%97%F5%2Bl%C5%10%F0w%C7V%5E%C5%40%FA
b=865241 Add Blink's HRTFKernel to the build r=ehsan

A functional difference is that HRTFKernel is not reference-counted.
(transplanted from 214033794f62382a72eacd6d58006c0313156cf0)

--HG--
extra : transplant_source : %21%403yOb8%2Ar%EA%CDmX%00l%03%13%15l%F0
b=865241 Use symmetry to halve the number of HRTF kernels calculated and cached r=ehsan
(transplanted from c43863ae921862444a95cdaf271387c6923456c5)

--HG--
extra : transplant_source : %C48c%AE%92%18bDJ%95%CD%AF%27%13%87%C6%924V%C5
b=865241 Add HRTF impulse response data r=ehsan

The impulse response sample data is directly from individual impulse response wave files
in Blink SVN revision 153183.
(transplanted from c56ecdd125ecb0cb1f995786be8bfe934f775a48)

--HG--
extra : transplant_source : %C5n%CD%D1%25%EC%B0%CB%1F%99W%86%BE%8B%FE%93OwZH
b=865241 Add code to interpret and resample impulse response data r=ehsan
(transplanted from 9b01d3f61a1bb50c16666203ff8c114b036f602a)

--HG--
extra : transplant_source : %9B%01%D3%F6%1A%1B%B5%0C%16fb%03%FF%8C%11K%03o%60%2A
b=865241 Reduce convolver fft size for low sample rates r=ehsan
(transplanted from 5a05c22150916a815d67df4ec9850f1bba83c977)

--HG--
extra : transplant_source : Z%05%C2%21P%91j%81%5Dg%DFN%C9%85%0F%1B%BA%83%C9w
b=865241 Add Blink's HRTFElevation to the build r=ehsan
(transplanted from 395fc5b9593cc2376f536012dc55e868c34164b5)

--HG--
extra : transplant_source : 9_%C5%B9Y%3C%C27oS%60%12%DCU%E8h%C3Ad%B5
b=865241 Add Blink's HRTFDatabase and HRTFDatabaseLoader to the build r=ehsan
(transplanted from 316df2d96b2420f285f9698cd2bacc819d4c9e5a)

--HG--
extra : transplant_source : 1m%F2%D9k%24%20%F2%85%F9i%8C%D2%BA%CC%81%9DL%9EZ
b=865241 make HRTFDatabaseLoader ref-counting thread-safe r=ehsan
(transplanted from c19e2f326d156dfa40341a34c3454004bff0d006)

--HG--
extra : transplant_source : %C1%9E/2m%15m%FA%404%1A4%C3E%40%04%BF%F0%D0%06
b=865241 don't join HRTFDatabaseLoader thread until it has finished r=ehsan

Also turn some always-true conditions into assertions.
(transplanted from 7ab5c4babe56d9c00954d9f503b132afea499d26)

--HG--
extra : transplant_source : z%B5%C4%BA%BEV%D9%C0%09T%D9%F5%03%B12%AF%EAI%9D%26
b=865241 Refactor DelayNodeEngine delay processing into a shareable class r=ehsan
(transplanted from d92240f69c48e3db7d27e55d90e58d96a7fa2d72)

--HG--
extra : transplant_source : %D9%22%40%F6%9CH%E3%DB%7D%27%E5%5D%90%E5%8D%96%A7%FA-r
b=865241 Add Blink's HRTFPanner to the build r=ehsan
(transplanted from 746b2ba6cf30b83029ea892fa506c754f728913d)

--HG--
extra : transplant_source : tk%2B%A6%CF0%B80%29%EA%89/%A5%06%C7T%F7%28%91%3D
b=865241 Implement HRTF panner processing based on Blink implementation r=ehsan,a=webaudio
(transplanted from 62ad090a94a4ae76ca6aaff167b15028be0384b3)

--HG--
extra : transplant_source : b%AD%09%0A%94%A4%AEv%CAj%AF%F1g%B1P%28%BE%03%84%B3