Computational Life: How Well-formed, Self-replicating Programs Emerge from Simple Interaction