#5 custom payload support

#5 Adds custom payload support

docs need to be updated still.
Do you prefer adding default implementation of DiscoveryBundle that uses InstanceMetadata to provide a default implementation of all of this?

That would basically make it so that out of the box the end-user  hasn't changed but for those who want a custom payload, they would have the appropriate hooks to support it.