Implement more orderly termination of BgpServer

Do not allow the BgpServer to be destroyed if BgpSessionManager's
WorkQueue is non-empty.

Move call to TcpServer::Shutdown back to DeleteActor::Shutdown as
we no longer accept incoming sessions if the BgpServer is deleted.
The latter is more watertight fix than calling TcpServer::Shutdown
immediately.

Do not accept incoming sessions if the BgpServer is deleted. This
stops the WorkQueue from building up after delete of a BgpServer
is triggered. Also, send a notification and delete the session if
the BgpServer is deleted when we process the session.

Change-Id: I56f823559e700dd6bcbeb8ebe3935697e91b47d2
Fix and improve bgp_server_test

Change-Id: I92014d563335137a242ca78cdfb40a1dda5da9db
Fix and improve bgp_server_test

Change-Id: I33c9cb3ed32ddad40c46da074421c52f0135c63b