Implement Docker backend

I've implemented a backend module for Docker containers, which supports 1) executing a command on a newly created container from a specified container image, and 2) copying local files onto a container image to generate another temporary one.

Currently, any changes to the filesystem by `run_command` is not preserved. So, we cannot write so complicated tests as executing a command then examining a generated file. As our future work, it would be useful to implement transactions to allow the test writers to decide which changes to the containers are preserved along the testsuit.