Fix inconsistent buffer sizes sent to analyzer

The analyzers are sent new buffers of audio data to process each time
they pass through the gst pipeline. Different file formats and bit depths/
sample rates can change the size of these buffers, in some cases making them
large and therefore infrequent. This causes choppiness in the analyzer
as it is not getting new data with every frame. This patch chunks the buffers
coming off the pipeline to correspond with the framerate of the analyzer.
Fix pointer arithmetic when seeking buffers

It's possible the sample type will change, so best to not use
a fixed value.
Synchronize buffer chunks with audio stream

The chunks are now determined by the density of data in the buffer
to the length of audio in the buffer. The chunk length can change
size so that the audio that is analysed is exactly what is being played
at the instant the frame is requested.
Refactoring
Apparently I'm blind. (Refactoring)
Merge pull request #4321 from TheUbuntuGuy/master

Fix inconsistent buffer sizes sent to analyzer