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 think in current agent protocol, the target is supposed to be `endpoint` [0], so this might be preventing it from working with our endpoint. But @robert-chiniquy might have better ideas about what `target` should mean here. Are we upgrading the protocol so that `target` corresponds to a feature rather than just the endpoint?

[0] https://github.com/virgo-agent-toolkit/virgo-base-agent/blob/master/libs/connection.lua#L261