Begin Solving Disappearing Fields Bug (Do Not Merge Yet)

This attempts to solve #151. 

The problem is - if a programme field is not given an order then it basically won't show up, due to the way the looping works when they are being drawn from the database into the array for display.

This solves the problem when it is isolated with tests, but introduces another - the edge case when we have a mixture of unset orders and set orders. I need to work out a way to loop around "filling in the blanks" of the orders where required.

This likely solves the bug apart from this edge case however, which I am not sure we should worry about.