Conditionally allow unpacking strings with length of type long

Some replies (e.g. dri2/Connect) contains string with length of type
long. These can be unpacked provided that the actual length is less than
Integer.MAX_VALUE.

Note that this problem will not go away even if we pass the raw bytes
directly to user rather than unpack into Java Strings, since the length
of the raw bytes will still be of type int. Read: this is a fundamental
limitation of Java.
Fix parsing of type references

When parsing type references (e.g. in fields and lists), the
QualifiedTypeRef should be returned by the Typemap and IM, since they
are the ones doing the actual lookup. In other words, Typemap and IM
must return QualifiedTypeRef and not the actual type.
QualifiedTypeRef must mangle the name of package

QualifiedTypeRef has to construct the fully qualified name of a type,
therefore the package name of the type must go through the NameMangler.
Replace null checks with Optional type

Replace null checks in Typemap, IM, and Xml2Ir with the Optional type.
This also serves to make it clear that the return values might not be
present.
Create the xjavab-ext module

Create the XJavaB extension module, containing extensions which is not
used by xjavab-core.
Allow generation of all possible extensions

Permit the generation of all the extensions which can be generated at
this point. The extensions which are not included depends on things
which are currently not available, such as switch statements or generic
events.
Generate extensions

Generate all the extensions which can be generated at this point.
Update README with implemented extensions

Update the README with a list of the newly implemented extensions.