reduce the various send_* functions to send/2,/3,/4 and send_async/2,3
add auto_reconnect_interval option
wrap and unwrap payloads by default
only verify a response with MLLP.Ack if the payload provided is an HL7.Message.t()
move the initial connection attempt into a handle_continue/2 clause
normalize (validate) host parameter to a tuple and raise if invalid
Always log an error when we fail to establish a connection
Store connection failures in state so we can return the caller the last known error in case
they try to send a message while the connection is still being established
Add and standardize on MLLP.Client.Error (exception) for returned errors