Initial refactor to use channels to share memory instead of mutex.

coverage.out needs to be added to .gitignore