Refactor dirserv_add_descriptor so we always free routerinfos and send events
We should split the function into two:
- one that does the rejections and frees the descriptor at the end, and
- another that adds to the routerlist
And we should make sure (somehow) that we always call control_event_or_authdir_new_descriptor(), as it's easy to miss one of the cases.