Initial implementation of OTR fragmentation support.
Now sets default (UNLIMITED) if null is returned for FragmenterInstructions.
Added javadoc to explain expectations of method
getFragmenterInstructions.
Decided to keep with upper bound header size for OTRv2 fragmentation
header size computation. Test adjusted appropriately.
Added some advanced tests.

Added test for the following cases:
1. Verify that we do not allow fragments with a size that has not enough
room for a payload.
2. Verify that we error out if we exceed the maximum number of fragments
allowed by the protocol spec, i.e. 65535.
3. Check that a fragmented payload confirms to a specific pattern for
OTRv2 and OTRv3.
Added some Javadoc and comments.
Added charset to getBytes() calls.
Reduced instructions to use single fragment size.
Store OtrEngineHost instead of fragmenter instructions.

Store host instance instead of instructions. Query host for
fragmentation instructions just before we start computation of numbers
or fragmentation of message, such that we can optimally adjust to
current state of host's transport.
This also means that instructions may vary for each use of the
fragmenter, e.g. each message that needs to be fragmented.
Preparations for handling null instructions.
Further improvement on implementation.

* Use default fragmenter instructions if null instructions provided.
* Verify in tests that getFragmenterInstructions() is only called once
per operation.
* Add verification of fragmenter instructions before using them.
* Added tests for invalid fragmenter instructions.
Decided to ignore TODO for larger fragment sizes.

Removed TODO because String length also ranges as integer. There is no
sense in support fragment sizes as long if the original string messages
size is expressed in a mere integer.
Detect if circumstances are right for fragmentation.
Added method for testing whether content is OTR encoded.
Adjusted the OTRv3 fragment format to print leading 0s in instance ids.