circe-channel-users-synchronize: Fix and add proper initial-name handling.

If we just mark the initial users as active, they will emit part/quit
messages even if they never talked.  But we also don't want Circe to
emit a "first activity" message for these users, so we give them a
property `initial-names' and check for that in the mark-as-active
function to omit their first-activity message.
Track recently-parted non-lurker users and show their JOIN.

Upon parting/quitting, an active (non-lurker) user is added to
`circe-recently-parted-active-users', from which they are removed
after `circe-parted-users-timeout' seconds.  If a user re-joins before
the time-out, they emit a re-join message.

Related functions/variables:
`circe-parted-users-timeout'
`circe-parted-users-cleanup-interval'
`circe-format-server-user-rejoin'
`circe-channel-add-user'
`circe-channel-remove-user'
`circe-channel-parted-active-users'
`circe-parted-users-cleanup'
`circe-parted-users-cleanup-timer'
`circe-lurker-mark-as-active'