boost::circular_buffer seems to have buggy pass by value. Use own simple circular buffer with boost ptr_vector to avoid by-value vector shenanigans.

Signed-off-by: Steven Lovegrove <stevenlovegrove@gmail.com>