Add extended HeartBeat request functionality.

Allow for finer control of HeartBeat requests.  Specifically, take the
payload and padding data as arguments along with the value to be sent
as the payload length.  While this length should generally match the
size of the buffer, any valid payload length will be accepted allowing
for non-standard HeartBeat requests.  Notably, sending a payload length
that is larger than the actual size of the payload itself will tickle
the Heartbleed bug on affected hosts (for educational purposes only.)
Leverage extended HeartBeat methods.

Implement the original HeartBeat request methods using the new extended
API methods.
Add API for Heartbleed probe.

Send a HeartBeat request with the specified payload length, but with a
zero-length payload regardless.  This can be used to probe for the
Heartbleed bug (for educational purposes only.)