Move friend list handling to the client

This change would make handling the friend list the responsibility of the client. Since there are varying opinions on how best to handle the friend list, it makes sense to leave the implementation to the client.

This will break a lot of stuff. Existing clients will have to add code to create, manage, and store the friend list. But if we're going to do this, the sooner the better.

(sorry for all the commits, I can't into branching)