Add RPC implementation for communication between windows, addon-code and workers
Add err_util module which provides a base class for exceptions across the app
Support RPC handlers which return replies asynchronously

This is useful when producing the result for an RPC call
requires async calls on the server.
Convert RPC to use callbacks rather than promises for portability

The `rpc` module is used by JS code running in a normal
browser environment, content scripts in the Firefox extension and
add-on scripts in the Firefox extension. Using callbacks makes it
easier to use the same code in each of those environments, otherwise
 a promise implementation is required in each and the Q promise
 implementation used in the web code does not work out of the box
 in content scripts.
Convert messages between content and add-on scripts to find form fields to use the RPC implementation

This works around an issue where repeated calls to self.port.once() can
fail due sporadically due to an issue in the way 'for each ()' handles
deletion from the collection during iteration - see https://github.com/mozilla/addon-sdk/pull/1557
for details.

It also ensures that requests and responses to find fields in the
current page match up. Previously this was not guaranteed.

This currently copies the `rpc.ts` file into addons/firefox/src/ as part of the build
so that main.ts can reference it via require('./rpc'), otherwise the
typescript compiler will recreate as much of the directory hierarchy as
necessary in the output lib/ folder.
Add a note about why lib/net/rpc uses callbacks instead of promises.