Be selective about how file descriptors are removed since they may be reused for a different purpose.

Kombu was removing them after they were being reused by another worker process.

I could repo by using the test program mentioned in https://github.com/celery/celery/issues/1785#issuecomment-33649698 and using 8 concurrent workers.  I put logging in front of every single hub_remove() command I could find -- until came upon this place, which showed that file descriptor 12 was being removed after it was being reclaimed by another worker using it for read purposes and triggering the assertion error.  The KeyError in https://github.com/celery/kombu/pull/353 causes the file descriptor to be removed completely, causing the assertion failure.

```
[2014-05-08 00:21:02,644: ERROR/MainProcess] on_process_up proc.outqR_fd=12, proc.inqW_fd=11
[2014-05-08 00:21:02,652: ERROR/MainProcess] hub_remove=104
[2014-05-08 00:21:02,652: ERROR/MainProcess] kombu KeyError hub_remove
[2014-05-08 00:21:02,653: ERROR/MainProcess] hub_remove=12

```

AssertionError on proc.outqR_fd=12 inside on_process_alive() triggered because of the hub_remove=12 call made inside this section.

@ionelmc @ask