Pass an id around propono between requests

This turned out to be quite complex, partially because I've tried to maintain the old syntax as well as the new, so everything doesn't suddenly break. I've written it in a way that will let us pass more propono-specific fields around very easily should we want to.

I'd like to do one more refactor on this with regards to the way we don't use DI where we could, but then I'd like to release version 1 (with the legacy stuff I worked on tonight removed).

Let me know what you think (cc @malcyl, @mmmmmrob, @ccare). Open to modifications/suggestions. I apologise if I've missed anything stupid. Tiredness is finally starting to catch up with me. Night!