Core/Guild: Only send achievement criteria updates to players that requested them.

Implements CMSG_GUILD_SET_ACHIEVEMENT_TRACKING

I created this PR to know others opinion on it because I do not like my solution.

Notes: I didn't save the tracked criterias to DB because the client always re-sends them at login and when the tracking is changed, also there is no UNSET packet.
What's the problem with passing a container by value and then swap? It's worse than passing by const ref and then copy it into the other one.