Clean up API: Put the tournament on the optimser

This means that we have fewer confusing functions
where we're passing both around. This was especially
annoying because of the discrepancies in ordering.
start to provide a better interface to optimisation routines