compiler/arm/c-call: add support for passing/returning float ins c calls

* The C calling convention for ARM passes single and double float
  arguments in the first 16 single (8 double) float registers as long
  as there is space and then falls back to the stack.
* Each argument is passed in the first unallocated registers of
  appropriate size, e.g. void(float, double, float) and void(float, float,
  double) use the same registers for the two float and the double register.
* Returned single or double floats are passed in the first single or
  double float register.
* I didn't implement stack passing for now, since I have no idea how
  I would go about doing that.