Stub out serialization
Keep the maximum ID in the dex file

We want this so that we can know where to start generating IDs from when
we deserialize a dex file.
Start on serialization

At a bit of a sticky spot in deserialization.  There isn't (and
apparently can't be, on account of the continuation) a MonadFix instance
for Get.  This makes re-assembling values very tedious.  All of the
intermediate values need to be parsed out and then re-assembled in a
separate pass.
WIP serialization

Worked around the lack of a MonadFix instance by manually knot tying
WIP
WIP almost done
WIP
I think everything is implemented now...
Serializer consistency
Add a function for encoding Types back to java bytestring names
Make sure we are getting *all* types in the DexFile type table

The old type table included all of the types in the type table of the
raw apk dex file.  These are only types referred to by name in the
code.  This is not actually all of the types we use, however.  We also
"generate" new types for things like array-get (which returns a value of
the inner type of the array).  In the case when this type was not
mentioned explicitly in the dalvik, it was not in our type table.

This commit adds a pass to collect these types that we synthesize.
Let the dumper serialize dalvik
Add a note about synthesized types
Fix a decoding bug
Add a deserialize command to the SSA pretty printing tool
Additional error information
Fix the field bug

There can be fields referenced that don't live in any class, so fields
need to be stored in a separate table.
Check in the tool mod

The loader just prints out the number of classes now.  This is more
useful for pure timing