Fix CFA-related directives in x86-64 backend #2300
I believe that some of the CFA adjustments in the x86-64 backend aren't correct at the moment. I had a fair amount of trouble getting this right, so that variables on the stack appear correctly in the debugger at all times, but I think it's ok now. The reference for some of this business is the x86-64 ABI document which is available on the web in various places.
There used to be another CFA-related error in the same backend, but it was fixed in #2237 I think.
I have introduced some helper functions to minimise the possibility of getting the CFA offset wrong at the same time. These simplify the code.
We will need to check the other backends for similar problems, but let's do that once the gdb support is merged and working on x86-64.