Don't use shared_ptr for buffer iterators in CircularWindowIterator
Once #30 (closed) is implemented it would probably make sense to get rid of shared_ptrs used in CircularWindowIterator members and just use normal instances of the CircularBuffer::iterator. This would also allow to get rid of the custom copy/move constructors/assignment operators which are currenlty needed in CircularWindowIterator to correctly copy the data_{start,end}_ pointers.