server: maintain active_servers list through explicit weak references

It's possible for the server object to get freed before its
child watch fires (if the slave is stopped early), so
we can't rely on the child watch to main accounting on the active
servers list.

This commit changes the code over to use weak references instead.