Bootstrapping + Connectedness Fix

There was a stupid error on net connectedness check.
I've fixed it and added a test case.
We should also add a bootstrap check test case, but let's
merge this in for now.
part of the problem is that the way we're managing addresses is all screwed up, changed all over the place etc. 

What do you think of:
- making a `type AddressBook map[peer.ID][]ma.Multiaddr`
- making net use only `peer.ID` and an `AddressBook`
- making `peer.ID` be `type peer.ID string` to make everything nicer and easier all over

also something to be said for:

```Go
type Peer string

type KeyBook map[string]ci.Key
type AddressBook map[Peer][]ma.Multiaddr

type PeerBook struct {
  Keys  *KeyBook
  Addresses *AddressBook
}
```