Documentation improvements and cleanup

* Document functions with callback syntax to specify parameters and return values.  Fixes #1085.
  * Some are still listed as `Function` because they don't have a strict interface.  For example, the signature of an `Event` listener varies from instance to instance.
* Switch modules which create a "namespace" which holds static values, functions, etc. - but does not provide a constructor - to use `@namespace` syntax instead of `@exports`.  
  * This allows changing the template to include function signatures for `@exports`.  Going forward, `@exports` are assumed to be free functions.
Would it be better to use `left` and `right` here instead of `a` and `b`?  That's the convention we seem to use elsewhere.