#5 custom payload support

#5 Adds custom payload support

docs need to be updated still.
It can be made public. 

The class needs to be the same as the type declared as V so I don't think we can provide a default implementation (can't do V.class)

Do you think it would be better to provide a DefaultDiscoveryBundle that implements with InstanceMetadata?