Stop allocating memory when replacing structs in for-loops

Just make InputData and OutputData immutable, and construct new ones (that share couplings.

function solve_system(input::InputData)
    N = length(input.couplings)
    # Make new output 
    out = OutputData(N)
    # To solve the system, out.couplings
    # is the ordered input.couplings plus some randomness
    out.couplings .= (input.couplings .+ rand(N)) #should take about 3μs
    sort!(out.couplings) #should take about 3μs
    # out constant is the penultimate coupling  
    out = OutputData(out.couplings, input.couplings[N-1])
    out
end