Allow formatting floats, doubles in hex

Include a test suite case.
Describe the extension in ltrace.conf.5.
Mention it in NEWS.

There's no similar agreed-upon convention for oct, and displaying which
bits are set in a floating number like what bitvect does is certainly not
helpful.  Hence, remove the corresponding TODO item.  Add a different
(unrelated) one instead.
diff --git a/lens_default.c b/lens_default.c
index 093b803..ed3d0e1 100644
--- a/lens_default.c
+++ b/lens_default.c
@@ -186,7 +186,17 @@
 }
 
 static int
-format_floating(FILE *stream, struct value *value, struct value_dict *arguments)
+format_double(FILE *stream, double value, enum int_fmt_t format)
+{
+	if (format == INT_FMT_x)
+		return fprintf(stream, "%a", value);
+	else
+		return fprintf(stream, "%f", value);
+}
+
+static int
+format_floating(FILE *stream, struct value *value, struct value_dict *arguments,
+		enum int_fmt_t format)
 {
 	switch (value->type->type) {
 		float f;
@@ -194,11 +204,11 @@
 	case ARGTYPE_FLOAT:
 		if (read_float(value, &f, arguments) < 0)
 			return -1;
-		return fprintf(stream, "%f", (double)f);
+		return format_double(stream, f, format);
 	case ARGTYPE_DOUBLE:
 		if (read_double(value, &d, arguments) < 0)
 			return -1;
-		return fprintf(stream, "%f", d);
+		return format_double(stream, d, format);
 	default:
 		abort();
 	}
@@ -400,7 +410,7 @@
 
 	case ARGTYPE_FLOAT:
 	case ARGTYPE_DOUBLE:
-		return format_floating(stream, value, arguments);
+		return format_floating(stream, value, arguments, int_fmt);
 
 	case ARGTYPE_STRUCT:
 		return format_struct(stream, value, arguments);