Lock later in life of container.

The runner and the observer should both have exited by the time we reach the
end of launch(), so we shut them down explicitly when we reach the end of the
function, so we can be sure launch() actually shuts down when the container is
done.