Fix heap corruption in exif_ifd_make_value

Summary: CVE-2014-3670

The logic for writing float/double arrays in exif_ifd_make_value is flat out wrong. Firstly, the whole size of the target buffer is `byte_count`, yet `byte_count` is used as if it was the size of an individual element in the array.

Furthermore, the source pointer for the memmove is wrong as well. The expression `info_data->value.f` access the union (`_image_info_value`) as a float, even though it is a pointer in this case. See line 5857 for an example where - in the case of an array - the list member is derefenced properly as a pointer to an array. This ends up being simultaneous out-of-bounds read and write.

Reviewed By: @oyamauchi

Differential Revision: D1553388