Fix race condition in BgpPeer close procedure.

The BgpPeer destructor sometimes asserts because all paths added
by the peer have not been deleted i.e. the refcount_ in BgpPeer
is non-zero.

Root cause is that the BgpPeer could get closed before it's been
registered to all VPN tables. Since the peer is not registered to
the VPN tables, routes from the peer that were added to the VPN
tables do not get deleted during the close procedure.  Note that
BGP processes updates and adds routes into appropriate tables w/o
wating for table registration to be complete.

Fix is to keep track of whether VPN tables have been registered.
If VPN tables have not been registered when the peer needs to be
closed, kick off the registration and defer the close procedure.
The close will eventually resume when registration for all tables
is complete.  Also be sure to reset VPN table registration state
when the close does eventually start, so that we can handle the
same race condition again.

Change-Id: I58300e36d048902709343860066eb2ffdc4dca73