RFC: add type dependency ordering

I got around to adding dependency ordering for types (which has decreased my work in wrapping libav/ffmpeg significantly!).  I'm not sure if or how this fits in with your other ideas (cf. Build EAR tool in #33), but if you haven't made much progress in that arena, this might be useful.  

* Introduce an ExprUnit type for grouping together expressions
  (e.g., enums), specifying dependencies, and maintaining
  wrapped/output status
* Removed cache_wrapped (subsumed above)
* empty_structs is now a Set

* Type declarations, enums, and typealiases are stored in the
  common_buf, along with dependency information.
* All enum Exprs are grouped together in the same ExprUnit
* For other Exprs, there is one ExprUnit per Expr
* Before outputting, the common_buf OrderedDict is dumped to an
  array with dependencies properly ordered.  (Circular
  dependecies are implicitly detected, but remain.)

* Function declarations are wrapped as before (in an array)

Note: this subsumes #96, although those changes can be backed out.   I find it useful having blank lines in the output, though.