test: start moving to executing a simple 'program' datatype

We want to re-use these unit tests in other scenarios, in particular
we'd like to transmit the programs to a remote (Mirage) virtual machine,
instruct it to single step through, while we verify the side-effects
in the physical world are correct.

Signed-off-by: David Scott <dave.scott@eu.citrix.com>