Adds handshake and connection source handling

## What is this PR? 

Adds handshake support and allows agent connections to control the message source.

## How it works

- [x] Adds token parameter to the agent constructor options
- [x] Adds token parameter to Connection constructor options
- [x] Makes Connection handshake message match virgo-base-agent handshake message
- [x] Updates Heartbeat feature metadata to match aep expectation
- [x] Nit: updates virgo.js version to match npm published version
I'm thinking a feature might decide to send a message to somewhere other than endpoint. An example is when an agent is used to proxy between the Internet and a LAN. Also, since `Connection` can be used by both agent and endpoint, it's possible that the `target` is an agent ID.