Added run function for programs

Using the Program Manager, you can run programs without having to worry
about adding their thread to thread stack because all of that is handled
for you.