fireworks: Add transaction and commands

Fireworks uses its own system for transaction.

There are two ways for this transaction:
1.AV/C vendor dependent command for command/response
2.Specific addresses for command/response

With 1, some devices cannot response correctly to some commands. So this module
implement 2.

The address for response give us an issue. When this driver allocate its own
callback function into the address, then no one can allocate its own callback
function via Juju interface. Currently this commit don't solve this issue. This
issue is solved in later commit.
fireworks: Add stream and connection management

Fireworks transmit/receive AMDTP stream with a few quirks and manage the
connection by CMP.
fireworks: Add proc interface for debugging

This commit add proc interface to output infomation for debugging.
 - hardware capabilities
 - clock
 - meters
fireworks: Add MIDI interface

This commit adds the functionality to capture/playback MIDI messages. MIDI
messages are multiplexed/demultiplexed into AMDTP stream.
fireworks: Add PCM interface

This commit adds the functionality to capture/playback PCM samples.

PCM samples are multiplexed/demultiplexed into AMDTP stream safely with stream
helper functions.
fireworks: Add hwdep interface

This is for mixer/control application in user land. The application can
lock/unlock kernel streaming or get notification at starting/stopping kernel
streaming to use hwdep interface.
fireworks: add command/response interface for user land

Describe:
/dev/snd/hwdepCXDY command/response
resp_buf_size/resp_buf_debug
/proc/asound/cardX/#queues