tickit_utf8_put() appends bytes into a buffer to represent the given codepoint. The UTF-8 bytes will be
appended directly starting from str, and the function then returns the total number of bytes appended.
The length of the buffer should be given to as len; if the buffer is not long enough then it is left
unmodified and -1 is returned instead. If str is NULL then the function will simply return the number of
bytes it would need to append to represent the codepoint.
This function does not expect the buffer to be NUL-terminated, and it will not terminate the buffer with
a NUL byte on completion.