Refactor the serialization sub-system.

This patch splits the serialization code in several modules
for clarity and maintainability. More importantly, the
variable registry is not a singleton any more; instead
each Kernel has its own variable registry.

A new simulator prompt command "dump" is introduced,
which compresses the data text; "read" is changed
to print out variable contents uncompressed for clarity.
Set SUFFIXES once in the top-level Makefile.am.
Replace local include paths by relative-to-top.

In other words #include "foo.h" -> #include <path/to/foo.h>
This is to prepare for automatically generated headers,
which might reside in a built tree separate from the source
tree.
Add serialization for MemData and IOData.
Replace local include paths by relative-to-top (Allocator.cpp).
Add serializers for CDMA::Node::Message and ZLCDMA::Node::Message.
Define BUILT_SOURCES at the top of Makefile.am.
Kill a compiler warning in the tinysim demo.
Add a component preprocessor.

This equips MGSim with a component preprocessor
which can generate struct definitions from a high-level
definition using S-expressions (LISP syntax). This
makes it possible to automatically synchronize
the list of attributes in a struct with its
serialization function.

The preprocessing engine chosen is Python Jinja2.
Use the component preprocessor to generate structures.

This uses the new preprocessing facility to generate
many structures involved in Buffer instances, so
that their serialization function is automatically
generated and kept in sync with the attribute list.
Add serialization of Buffer.
Update README with latest compiler version.