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.
`left` and `right` make somewhat more sense for something like `equals`, which in better languages would be defined as infix operators, e.g. `left == right`.  Comparison functions seem to generally be different.  MDN for JavaScript uses `a, b`.  Java uses `o1, o2`.  .NET uses `x, y`.