Use std::string in BufferManager::Memory instead of malloc
BufferManager cleanup
Extract common code into BufferManager::Output class
Remove full_callback in Buffer, throw BufferIsFull() instead