Unify input/output containers to use Eigen.

This makes the input and output formats consistent with flattened
representations that interleave the samples at each point in time for
each channel.  Eigen makes it simple to map between the two
representations without any copying, e.g.:

  // Size num_ears * num_samples vector, where num_ears = 2.
  vector<float> flattened_stereo_samples;
  // Size num_ears by num_samples matrix.  This works because ArrayXX
  // stores it's contents in column-major order.
  Eigen::Map<ArrayXX> stereo_carfac_input(&flattened_stereo_samples[0],
                                          num_ears, num_samples);

This also improves integration between the CARFAC and SAI since the
per-ear CARFAC output is correctly formatted for use as SAI input
without needing any copying.