Include imports in ns require clause

Include imports in namespace require clause, as the types defined in the
imports are needed in th dependent.
Unify primitives, composites, and typedefs

Unify primitives, composites, and typedefs so that they behave in
exactly the same way. They are still represented as different IR types,
but they all support the same protocols so can be treated the same way.
Make skipping of replies separate from requests

Since the XML definition of <reply> elements are always inside
<request>, it used to be that when a request has to be skipped, the
reply inside will also be skipped. This results in having to manually
create reply functions and types for e.g. QueryTextExtents. Now the
skipping of replies are separate from the skipping of requests, so
perfectly parse-able replies don't have to be manually written.
Introduce EventCopy and ErrorCopy IR

XML <eventcopy> and <errorcopy> now have their own IR representation,
which behave in the same way as normal Event and Error.
Directly represent XML definitions

Rather than translating from XML definitions directly into runnable
code, from now on they will be translated into Clojure data in a
one-to-one fashion. xcljb.gen.*-types.clj will therefore contain types
definitions (i.e. xids, structs, typedefs), with the actual
implementation of the types (e.g. serialization) happening in
gen-common. This will make translating from XML simpler, as it's just
from XML data to Clojure data. The heavy lifting will be moved out from
ir.clj, which was complicated and error-prone. Any changes in e.g.
serialization will also not require regenerating everything in gen/*,
but just changes localized to gen-common.
Update IR to use gen-common

Update IR fields and types to use gen-common.
Update request/reply/event/error IR for gen-common

Update request/reply/event/error IR to use gen-common. Also update
sending of request to take gen-common into account.
Remove manual reply generation

Remove manual reply generation, as it is unneeded after skipping of
replies and requests have been separated.
Update ns requires for generated files

Update ns requires for generated files, as they now need gen-common.
Remove unneeded functions from common
Simplify connection setup

Since we now have the setup structs as data, it is now used to
deserialize the reply returned by server during setup. Rather than
hand-coding and reading the reply field by field, we now do block reads
and pass the resulting buffer to the setup structs directly to be
deserialized.
Update read-channel loop for gen-common

Update read-channel loop for gen-common. Now we do block reads and pass
the resulting buffer directly to respective read-reply/event/error.

It used to be that the first field in a reply is assumed to be unsigned,
since it has to be read in the read-channel loop (we need the sequence
number, which comes after the first field), and there's no way to
re-read it in read-reply as we're directly reading from channel. Now
that we have the buffer, we no longer need the unsigned assumption and
read-reply can read the first field properly.
Update manually-generated for gen-common

Update manually-generated request, event, etc. for gen-common.
Manually generate Notify event for randr
Include skipped types and events in typemap

Include skipped types and events in typemap, since they may be referred
to through typedefs and eventcopys.
Include extension names in typemap

Include extension names in typemap, since extension headers are not
adequate when it comes to event and error dispatching. Sending and
receiving of extensions require names of extensions, not headers.
Remove unneeded functions

Reading and then decoding from channel is now only needed by auth, so
moving the functions from common to auth.
Improve error message

Improve error message by including the offending sequence number.
Stylistic changes
Update XCB tutorial examples

Update XCB tutorial examples to take into account new changes, i.e.
structs and events are now represented as regular maps, event type is
now provided in the event map with key :xcljb/event.