* introduce audio_stream_t, and make audio_ringbuffer a subclass of
  audio_stream_t
* introduce stream_fetcher_t, stream_filter_t, stream_filter_factory_t,
  and stream_filter_list_t.
* Empty stream_filter_list_t instances are passed to audio_hw_if::set_params()

Non-essential changes:
 * represent buffers as uint8_t* instead of u_char*
 * make outp const
 * make the second parameter of audio_hw_if::start_output() const
 * make the second parameter of audio_hw_if::trigger_output() const
 * change types of audio_ringbuffer::{pause,copying,needfill,mmapped}:
   char -> boolean_t
 * change the type of audio_params::sample_rate: u_long -> u_int
   The sample rate is exposed to userland as u_int.
 * typedef audio_params_t
introduce two macros: SPECIFIED(x) and SPECIFIED_CH(x)
for readability.
audio_stream_t has an instance of audio_params_t, not a pointer to
audio_params_t.
add audio_stream_t pointers and stream_filter_t instances to audio_softc.
- add audio_stream_get_space()
- stream_fetcher::fetch_to() returns an errno and # of written bytes
- audio_write() uses stream_filter pipeline
* audio_read()
  remove aurateconv/sw_code related code.  It simply copies data
from the last audio_stream_t instance.

* audio_ioctl()
  FIONREAD/AUDIO_WSEEK: return the available data size of the
last audio_stream_t

* audio_rint()
  apply filters here so that FIONREAD and AUDIO_WSEEK can return
correct value.

* audio_softc
  remove sc_input_fragment_length, sc_input_fragment,
sc_pconvbuffer_size, sc_pconvbuffer, sc_pconv,
sc_rconvbuffer_size, sc_rconfbuffer_begin, sc_rconvbuffer_end,
sc_rconvbuffer, sc_rconv.

* audio_if.h
 add audio_stream_get_used().
remove needless parentheses for return
remove audio_params::sw_code, factor, factor_denom,
hw_sample_rate, hw_encoding, hw_precision, hw_channels.
correct audio_params parameter of audio_fill_silence()
* stream_filter_t
  remove get_input_size() and get_output_size() for simplicity.
The MI audio decides buffer sizes.

* audio_softc
  has audio_stram_t instances instead of audio_stream_t pointers

* audiosetinfo()
  setup filter chains, and add some helper functions
  The variables, cleard and modechange, are represented as boolean_t.

* audio_rint()
  set null_fetcher so that every filter has non-null previous fetcher.
* add audio_stream_add()
* remove 4th parameter of stream_fetcher::fetch_to()
* add must-have variables to stream_filter.
remove old aurateconv stuff
change types of the followings:
  au_mixer_ports::isenum: u_char -> boolean_t
  au_mixer_ports::isdual: u_char -> boolean_t
  audio_softc::sc_blkset: u_char -> boolean_t
  audio_softc::sc_sil_start: u_char* -> uint8_t*
  audio_softc::sc_rbus: u_char -> boolean_t
  audio_softc::sc_pbus: u_char -> boolean_t
  audio_softc::sc_dying: u_char -> boolean_t
add audio_params::validbits to distinguish 24bit data in 24bit container,
24bit data in 32bit container, 32bit data in 32bit container.

There is no userland API to specify audio_params::validbits, and
audio_params::validbits is always the same value as audio_params::precision
at this moment.
change types of the followings:
  au_mixer_ports::isenum: u_char -> boolean_t
  au_mixer_ports::isdual: u_char -> boolean_t
  audio_softc::sc_blkset: u_char -> boolean_t
  audio_softc::sc_sil_start: u_char* -> uint8_t*
  audio_softc::sc_rbus: u_char -> boolean_t
  audio_softc::sc_pbus: u_char -> boolean_t
  audio_softc::sc_dying: u_char -> boolean_t
re-implement sw_code functions as stream_filter
* audio_stream_ctor()
 stream->end - stream->start should be multiple of the frame size
avoid interger rounding
support sampling rate conversion for 32bit subframe
correct usage of stream_filter_t::filters[].param