compile fixes

Assorted fixes to get things to compile and init.
introduce bindings

Adds lib/axiom/bindings/base.js and the services and extensions
binding subclasses.
README update
Add some links to README.md
Fix whenLoadedAndReady reference in README.md
add descriptor samples to README.md
Remove a spurious ``` from HACK.md
More HACK.md fixes
Reduce, Reuse, Recycle.

From lib/axiom...

bind.js:
* Moved into main.js

bindings/base.js:
* Verify typeof function on method binds.
* Add map type.
* Add ability to define a "first" function to be called on method endpoints.
  This lets the binding set up some default action that happens before the
  to-be-bound method is invoked.  Remove fast-path code to simplify the
  permutations.
* Make closeErrorValue coerce any argument into an AxiomError if it isn't
  already.
* Make closeErrorValue return the AxiomError so that it can be used to reject
  a promise as well.

bindings/extension.js:
* Large refactor, it's a rewrite essentially.
* Add a static `subclass` method which returns an ExtensionBinding subclass
  tailored to a specific service.

bindings/service.js:
* Large refactor, it's a rewrite essentially.
* Use Maps and Sets instead of raw Objects and Arrays.
* Create and store a service specific ExtensionBinding subclass.
* Track the extensions applied to the service.

core/err.js:
* Move to error.js

core/extension.js:
* Refactored into bindings/extension.js

core/module.js:
* Refactored into bindings/module.js

core/module_manager.js
* Use Maps and Sets instead of raw Objects and Arrays.
* Refactor to use the Module/Service/Extension binding classes.

core/service.js:
* Refactored into bindings/service.js

core/service_manager.js:
* Removed.  Services are now scoped to Modules, so there's no need for a global
  ServiceManager.  The ModuleManager provides a getServiceBinding method which
  can look up a service given a "module-service-id" of the form
  "service-id@module-id".

descriptor.js:
* Rename the module to 'axiom'.
* Filesystem/commands/views descriptor churn.

main.js:
* Consolidate bind.js code into this module.

services/commands/command_manager.js:
* Refactor to match Module/Service/Extension binding shakeup.
Add missing bindings/module.js
fix axiom/core/err reference in base binding
Clean transpile output before transpiling

This ensures that the transpile output doesn't contain renamed or
deleted files from previous runs, which would then get included in
the concatenated output.
jshintrc: allow functions in loops
Change 'value' to 'gotValue' in TypeMismatch error.
BaseBinding: Add shortcut syntax for binding by method name.

Also throw AxiomErrors rather than plain Errors.
Add filesystem service.

Add the axiom filesystem bindings, JsFileSystem implementation, and
the default filesystem service.
Remove references to 'wam.*' from comments.
Make execute_context and js_execute_context work

execute_context.js:
* Transition from the old wam.Event API to AxiomEvent (which has an explicit
  fire() method.)

js_directory.js:
* Rename linkEntry->link(), linkFileSystem->mount()
* Add install() which turns a {name: callback, ...} map into JsExecutables and
  links them into the directory.

js_executable.js:
* Pass the ExecuteContextBinding to the callback as the first param, since
  that's where the most useful functionality lives.  The JsExecuteContext is
  available as the second param in case the callee needs the "upcast" version
  for some reason.

js_file_system.js:
* Remove debug log.
* Change linkFileSystem() callsite to mount().