Add Channel.buildFactory().

This simple change wraps all of jschannel in a function call that can be
accessed through Channel.buildFactory(). This allows jschannel to be used
outside of the context of cross-document messaging, for example as an
RPC mechanism between a server and client, or to create intra-document APIs
that can easily become cross-document if needed.

Also added example/fake-window.html to illustrate the use of the new
function.
Reconnect option to allow the page in a child frame to reconnect with its parent after a reload.
Added stub generation and misc enhancements

- generate stubs under channel.remote
- declare remote methods on consumer side for instant availability
- automatically export bound methods to remote side stubs
- dynamically add/remove stubs on remote side with bind/unbind
- control stub generation on producer side with both global config
(cfg.publish) and on a per-bind basis using extra parameter
- calling non-existent method now causes error rather than timeout
(relying on timeout to let producer bind methods is not good)
- replaced comma expressions with regular if statements
- modified docs/tests accordingly, added new tests for stub generation
Made scope optional, fixed queing of ready msg

In theory the old code allowed missing scope, however an empty string
was then used as object property name in routing, causing routing to
fail. Now, if scope is missing, cfg.scope is silently set to
"__default".
Also, ready is set to true at beginning of onReady so that publish-reply
does not get queued.
Fixed scoping bug that mashed all method names to same one
Maintain order of queued messages

Queued messages were being replayed in reverse order. Now order is
maintained.
Ignore Webstorm project files
Allow `Error` instances to be thrown in remote methods
Enable loading via AMD / require.js

When loaded as an AMD module, the global-scoped object (window.Channel)
is still created.  This makes sure that it will not interfere with
existing pages using jschannel.
Merge remote-tracking branch 'remotes/jffry/master'
Merge remote-tracking branch 'remotes/bjrn/master'
Merge remote-tracking branch 'remotes/toolness/build-factory'
Merge remote-tracking branch 'remotes/okoskimi/master'

Conflicts:
	src/jschannel.js