libmm-glib: added methods to retrieve new SMS properties
cli: print new SMS properties in SMS status report
sms: fix full data setting with `g_variant_new_from_data()'

The `g_variant_new_from_data()' method uses the original array during its
operation, so we need to make sure it is valid as long as the method needs
it, or we'll end up with Valgrind complaining a bit:

==4834== Invalid read of size 1
==4834==    at 0x36ADC75DA5: g_variant_get_byte (in /usr/lib64/libglib-2.0.so.0.3200.4)
==4834==    by 0x3161ABED8C: ??? (in /usr/lib64/libgio-2.0.so.0.3200.4)
==4834==    by 0x3161ABEEA2: ??? (in /usr/lib64/libgio-2.0.so.0.3200.4)
==4834==    by 0x3161ABE844: ??? (in /usr/lib64/libgio-2.0.so.0.3200.4)
==4834==    by 0x3161ABE91E: ??? (in /usr/lib64/libgio-2.0.so.0.3200.4)
==4834==    by 0x3161ABEEA2: ??? (in /usr/lib64/libgio-2.0.so.0.3200.4)
==4834==    by 0x3161AC232E: g_dbus_message_to_blob (in /usr/lib64/libgio-2.0.so.0.3200.4)
==4834==    by 0x3161AB750A: ??? (in /usr/lib64/libgio-2.0.so.0.3200.4)
==4834==    by 0x3161AB9FEF: g_dbus_connection_send_message (in /usr/lib64/libgio-2.0.so.0.3200.4)
==4834==    by 0x3161ABDB22: g_dbus_connection_emit_signal (in /usr/lib64/libgio-2.0.so.0.3200.4)
==4834==    by 0x4C5B8BD: _mm_gdbus_sms_emit_changed (mm-gdbus-sms.c:2291)
==4834==    by 0x36ADC47694: g_main_context_dispatch (in /usr/lib64/libglib-2.0.so.0.3200.4)
==4834==  Address 0x939efa0 is 0 bytes inside a block of size 512 free'd
==4834==    at 0x4A079AE: free (vg_replace_malloc.c:427)
==4834==    by 0x36ADC4D37E: g_free (in /usr/lib64/libglib-2.0.so.0.3200.4)
==4834==    by 0x36ADC1CF40: ??? (in /usr/lib64/libglib-2.0.so.0.3200.4)
==4834==    by 0x43C88E: assemble_sms (mm-sms.c:1260)
==4834==    by 0x43CAD6: mm_sms_multipart_take_part (mm-sms.c:1329)
==4834==    by 0x43E2EF: take_multipart (mm-sms-list.c:268)
==4834==    by 0x43E546: mm_sms_list_take_part (mm-sms-list.c:328)
==4834==    by 0x454C8F: mm_iface_modem_messaging_take_part (mm-iface-modem-messaging.c:353)
==4834==    by 0x461DF6: sms_pdu_part_list_ready (mm-broadband-modem.c:5007)
==4834==    by 0x3161A6CFB6: g_simple_async_result_complete (in /usr/lib64/libgio-2.0.so.0.3200.4)
==4834==    by 0x432F82: at_command_parse_response (mm-base-modem-at.c:490)
==4834==    by 0x489F96: handle_response (mm-at-serial-port.c:161)
sms-part: don't read out of the pdu buffer

... or Valgrind will complain:

==4834== Invalid read of size 1
==4834==    at 0x43904C: mm_sms_part_new_from_binary_pdu (mm-sms-part.c:783)
==4834==    by 0x4382C9: mm_sms_part_new_from_pdu (mm-sms-part.c:485)
==4834==    by 0x461D85: sms_pdu_part_list_ready (mm-broadband-modem.c:5004)
==4834==    by 0x3161A6CFB6: g_simple_async_result_complete (in /usr/lib64/libgio-2.0.so.0.3200.4)
==4834==    by 0x432F82: at_command_parse_response (mm-base-modem-at.c:490)
==4834==    by 0x489F96: handle_response (mm-at-serial-port.c:161)
==4834==    by 0x486D0A: mm_serial_port_got_response (mm-serial-port.c:588)
==4834==    by 0x48758B: data_available (mm-serial-port.c:804)
==4834==    by 0x36ADC47694: g_main_context_dispatch (in /usr/lib64/libglib-2.0.so.0.3200.4)
==4834==    by 0x36ADC479C7: ??? (in /usr/lib64/libglib-2.0.so.0.3200.4)
==4834==    by 0x36ADC47DC1: g_main_loop_run (in /usr/lib64/libglib-2.0.so.0.3200.4)
==4834==    by 0x421398: main (main.c:150)
==4834==  Address 0x927e489 is 0 bytes after a block of size 25 alloc'd
==4834==    at 0x4A06F18: calloc (vg_replace_malloc.c:566)
==4834==    by 0x36ADC4D2C6: g_malloc0 (in /usr/lib64/libglib-2.0.so.0.3200.4)
==4834==    by 0x4844B2: utils_hexstr2bin (mm-utils.c:63)
==4834==    by 0x438284: mm_sms_part_new_from_pdu (mm-sms-part.c:476)
==4834==    by 0x461D85: sms_pdu_part_list_ready (mm-broadband-modem.c:5004)
==4834==    by 0x3161A6CFB6: g_simple_async_result_complete (in /usr/lib64/libgio-2.0.so.0.3200.4)
==4834==    by 0x432F82: at_command_parse_response (mm-base-modem-at.c:490)
==4834==    by 0x489F96: handle_response (mm-at-serial-port.c:161)
==4834==    by 0x486D0A: mm_serial_port_got_response (mm-serial-port.c:588)
==4834==    by 0x48758B: data_available (mm-serial-port.c:804)
==4834==    by 0x36ADC47694: g_main_context_dispatch (in /usr/lib64/libglib-2.0.so.0.3200.4)
==4834==    by 0x36ADC479C7: ??? (in /usr/lib64/libglib-2.0.so.0.3200.4)
sms: fix double free when parsing PDUs

If we get an error when telling the SMS list to take the new PDU, the caller is
the one responsible for freeing the part, so avoid doing it twice.

Relevant valgrind log:
==7287== Invalid read of size 8
==7287==    at 0x437CE1: mm_sms_part_free (mm-sms-part.c:344)
==7287==    by 0x454D11: mm_iface_modem_messaging_take_part (mm-iface-modem-messaging.c:359)
==7287==    by 0x461234: cds_received (mm-broadband-modem.c:4626)
==7287==    by 0x48A305: parse_unsolicited (mm-at-serial-port.c:256)
==7287==    by 0x48723D: parse_response (mm-serial-port.c:731)
==7287==    by 0x48759B: data_available (mm-serial-port.c:801)
==7287==    by 0x36ADC47694: g_main_context_dispatch (in /usr/lib64/libglib-2.0.so.0.3200.4)
==7287==    by 0x36ADC479C7: ??? (in /usr/lib64/libglib-2.0.so.0.3200.4)
==7287==    by 0x36ADC47DC1: g_main_loop_run (in /usr/lib64/libglib-2.0.so.0.3200.4)
==7287==    by 0x421398: main (main.c:150)
==7287==  Address 0x9840b78 is 24 bytes inside a block of size 104 free'd
==7287==    at 0x4A079AE: free (vg_replace_malloc.c:427)
==7287==    by 0x36ADC4D37E: g_free (in /usr/lib64/libglib-2.0.so.0.3200.4)
==7287==    by 0x36ADC61CCE: g_slice_free1 (in /usr/lib64/libglib-2.0.so.0.3200.4)
==7287==    by 0x437D5A: mm_sms_part_free (mm-sms-part.c:351)
==7287==    by 0x36ADC449EC: g_list_foreach (in /usr/lib64/libglib-2.0.so.0.3200.4)
==7287==    by 0x36ADC44A0A: g_list_free_full (in /usr/lib64/libglib-2.0.so.0.3200.4)
==7287==    by 0x43D8A1: finalize (mm-sms.c:1629)
==7287==    by 0x36AE8145DA: g_object_unref (in /usr/lib64/libgobject-2.0.so.0.3200.4)
==7287==    by 0x43CD52: mm_sms_singlepart_new (mm-sms.c:1376)
==7287==    by 0x43E223: take_singlepart (mm-sms-list.c:236)
==7287==    by 0x43E60D: mm_sms_list_take_part (mm-sms-list.c:338)
==7287==    by 0x454CC7: mm_iface_modem_messaging_take_part (mm-iface-modem-messaging.c:353)
sms: allow parts with neither text nor data only in Status Report PDUs