Be smarter about character encoding

Previously, a LuckyCharm object's "name" attribute was truncated to 32
characters. What actually matters is that it fits in 32 *bytes*, and UTF-8
encoding requires between 1 and 4 bytes to store each character. If the name
of a LuckyCharm object required more than 32 bytes to store, the
SharedMemory.write() method would fail with "ValueError: Attempt to write past
end of memory segment".

Now, truncate the name of the LuckyCharm object to 32 *bytes*.