Duplicate code (for real)
This is going to seem unintuitive but I'm sure the path to cleaning up the participant form starts with
increasing code duplication.
Currently the code is sharing 2 functions with the front end form. The functions don't do a lot of actual processing
but they do do a lot of preparing parameters. The calling functions do a lot of pre-work to call them - so
we are not getting much benefit from the sharing. On the other hand having this code tied up with another form makes
it hard for us to do the 'right' sharing - ie. currently the code to create a contribution paid by credit card & participant record is totally different to another payment method & we should work to share these bits of functionality