Fix: add extensions to the handshake.hello

This adds a concept of message extensions that can contain semi-opaque data.  An "options" hash is passed down through the agent many places but in each case we crack it open and take what we need and then pass a subset down to the next layer.  The extensions idea is to get passed down through all the layers and each layer or message uses what it needs.

This is an use case for the handshake message getting additional data from the application built on to the base-agent.