Update float calculations to use "float" instead of "double"

This patch updates floating-point constants and calls to libc math functions to use the "float" versions rather than "double".  On AVR, float and double are the same type so this change is a no-op (and the binaries should be unchanged by this patch).  On the Cortex-M4, this allows use of hardware floating point rather than software routines on double precision floats.

I also added a compatibility header for older versions of avr-libc that do not contains macros such as "#define sinf sin".