FIxed bugs with optional parameters and empty names

part / kick messages are optional and would send an 'undefined' string if not specified

allow the names extension function to have 'fn' as an optional parameter so that the event system can handle the response (otherwise it throws an error since it tries to call an undefined fn)

Also, some servers (at least unrealircd) just respond with a RPL_ENDOFNAMES if the request is for a channel that the user is not in. So map[chan] will be undefined. In that case with this PR it will return an empty array instead, for consistency.