Use Optional type for versions and extension names

Instead of using special values -1 and null when major/minor versions
and extension name/xname are not present, use the Optional type from
Guava. This way, use of these values have to be dealt with explicitly
rather than failing silently.
Centralize definition of core protocol extension name

Since the core protocol (xproto) is without an extension name but still
has to be dispatched on, the empty string was chosen as its name. The
name has now been combined into one place to prevent inconsistency and
make future modification easier.
Update gitignore

Include some XJavaB specific files in gitignore.
Shorten getAttributeValue() calls

Shorten getAttributeValue() method calls to reduce line noise, as the
namespace parameter is always null.