fix possible misalignment of icy metadata if headers and data are received at once

The block containing that data was getting dropped after the header processing so
ignored the initial data being sent and there fore the interval being counted for
the icy metadata block was incorrect. A behavioural change in some sendin clients
could trigger this, normally headers are sent first then data in separate packets.
use an average for new block sizing on mp3/aac streams.

To help in reducing memory copies, the new block sizing when processing the
partial frames can now use an average from the previous block and the anchor
of the queue block size.  This allows for a certain amount of flexability in
sizing (which varies with code frame sizes) and keeps memory copy work down
in the common case.