Use generated .c/.h/.js files.

* In nacl.js, use AliasType. This allows us to reference alias types
  just like all other types (via t.<typename>).
* Add Type.aliasEquals which checks if two types are equal after
  resolving them to an their aliased type(s).
* Output "struct Foo" instead of "Foo". This requires the zip.json file
  to be more explicit about which types are structs and which are
  typedefs.
* Include alias types in the main type list of zip.json. This is needed
  because in the JS generator, some types are dependent on alias types
  so they need to be interleaved.
Generate zlib_{commands,type}.{c,h}, zlib_gen.js

Also fix some of the generation code to handle empty argument lists.
This code doesn't work yet (because deflate and deflateInit have the
same signature). I'll fix that in the next CL)
Rewrite of helper.py. New primitives (char, long...)

* Rewrite of helper.py:
  - Separate Type from TypeData.
  - TypeData only has information that uniquely identifies a type. Each
    type references one TypeData. An Type is aliased when two Types
    reference the same TypeData.
  - Made it clearer which names are JavaScript identifiers, C
    identifiers, and the C typename.
  - All of this makes it easier to handle two functions that share the
    same signature (e.g. deflate and deflateInit).
* Add char, long, ulong primitive types.
* Add aliases for common types: short, int, size_t, etc.
* Proper dependencies in Makefile for template rules
Switch nacl.js over to using TypeData (like helper.py)

Also:
* Display extra information about why a overload wasn't chosen
* Allow coercion between similar primitive types (int32/long)
* makePointerType now specifies the desired type name (e.g. 'foo$')
  rather than generating it magically.