ViewerInstance: UpdateViewerParams is now a parameter to updateViewer()
ViewerInstance: move cachedFrame and cachedFrameParams to UpdateViewerParams, so that they are always valid together
ViewerInstance: use a boost::shared_ptr<UpdateViewerParams> as a parameter
ViewerInstance: updateViewer() is now asynchronous! the VideoEngine can (could?) prepare the next frame while this one is being drawn