Render surfaces defined in a render path can now have a size_multiplier which means their size is determined by the current viewport size.
Before rendering, allocation of the render surfaces occur (if needed) and the old ones are destroyed.
The Renderer holds a map of WeakPtr to all RenderSurfaces allocated. When a render surface is no longer held by a SharedPtr in a RenderPath, it gets destroyed