String encoding related fixes
This MR introduces several changes all related to string encodings:
- When reading strings, if the data read isn't valid UTF-8, we'll attempt to decode as GSM-7 or UCS-2.
- All TLVs that provide strings that may be encoded in different encodings, as per some field in the TLV, will now be read as arrays of guint8 values. It's a task of the user to convert those arrays of guint8 values into strings based on the specific encoding specified.
- Helper methods to convert encodings are provided for those TLVs that specify explicit encodings.