Transferring friends between clients

This change implements functions for sending friend structs as messages, as well as processing those messages. Such messages are marked with ```PACKET_ID_FRIENDSYNC``` so that they can be processed accordingly instead of displayed as normal messages.

In the future, this could enable a user to sync friends between devices. When a friend is added to one device, the client would automatically forward the new friend to any other devices associated with the user. This was discussed in #358.

Of course, for true syncing, you would need a delete as well as an add, but that can be implemented easily enough.