Fail any unconfirmed receipts when re-connecting

This is because the client starts issuing receipts from sequence 1 again
after reconnecting, and we might still have pending receipts from the
previous connection for which we will not receive a nack/ack

Fixed #19
Add missing default for PublishFailureReason and missing IPublishReceipt property
Added tests

Also refactored reconnect functionality into seperate method to enable
testing
Merge pull request #20 from jonnii/failure-reason

Fail any unconfirmed receipts when re-connecting