I would like to know: Is there a system call, library, kernel module or command line tool I can use to store the complete state of a running program on the disk?
A core dump is basically this, so yes, it must be possible to get.
What you really want is a way to restore that dump as a running program. That might be more difficult.
Something like this? You can also check out the checkpointing page on wikipedia.
You should take a look at the BLCR project from Berkeley Lab. This is widely used by several MPI implementations to provide Checkpoint / Restart capabilities for parallel applications.