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, `enum`s, and `typealiases` are stored in the
  `common_buf`, along with dependency information.
* All enum `Expr`s are grouped together in the same `ExprUnit`
* For other `Expr`s, 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.