Detached parameter data from the program

Closes #208

Please have a good look at it. There is probably a couple of ergonomic improvements we can do.
Does this really need to be a `MaybeOwned`? Wouldn't it be simpler just to use a `String`? It is the error case after all.