Connection: on close, remove FD from Scheduler first

when a hangup or connection close event is raised, the core
was invoking plugins callback directly and at the end the Scheduler
for removal procedure.

This behavior ended up in a problem as the core is not aware about
what a plugin is doing after a callback, the plugin may "open" a
new connection (new FD) and the Kernel "may" assign the previous FD
closed number again, ending in a new close from the caller, e.g:

 - Plugin request to hangup a connection.
 - Core receive the event and invoke callbacks for closing stuff.
 - Plugin after cleanup decides to create a new FD.
 - The Kernel assign the same FD number than the recently closed.
 - Core retakes the control and let the Scheduler close everything
   related to the original FD.
 - The Core is closing "the NEW FD" messing up everything.

After this patch the behavior is:

 - Plugin request to hangup a connection.
 - Core receive the close event, invoke the Scheduler.
 - The Scheduler cleanup all references for this FD, also it make
   sure to remove event notifications from the epoll(7) loop.
 - The Core invoke callbacks for closing stuff.
 - Everything gets clean properly.

Signed-off-by: Eduardo Silva <eduardo@monkey.io>
FastCGI: do not remove the FD event on hangup (Monkey already did)

Signed-off-by: Eduardo Silva <eduardo@monkey.io>