Move URL parsing/processing/normalization functions to separate module
Convert requests from app to panel content script to use lib/net/rpc

 * Start to use lib/net/rpc for communication between app and panel
   content script to simplify the code and ensure replies/requests
   match.

 * Replace '$propertyName in obj' with a typeof test.
   The previous syntax produced a runtime error.
Implement error propagation in lib/net/rpc
Propagate errors from RPC calls between addon code, content scripts and extension front-end
Use an EventStream for page-changed event signals
Add an internal preference to control which sync service is used

The only options currently are Dropbox (the default)
and httpfs which requires the user to run
'node lib/vfs/http.js <dir path>' to provide access to
a local dir.
Avoid window RPC ports receiving messages sent by themselves

When two ports are created for the same window, as is the case
in the Firefox add-on where one port is in the app frontend
and another is the extension's content script, the ports
on both sides were receiving all of the messages they were sending.

Fix this by introducing a 'send tag' and 'receive tag' to
WindowMessagePort. Ports will include the send-tag with all outgoing
messages and only respond to incoming messages where the tag matches
the port's receive-tag.
Actually pass the autofill fields from the extension front-end to the page
Use cloneInto() to copy any errors or results from content script to extension front-end

Use cloneInto() to make objects created in panel content scripts
available to web content in the extension front-end.
Use lib/net/rpc for page-changed and extension panel shown events
Set the current URL in the app's state correctly after first load

After first load read the 'currentUrl' property from the Firefox
add-on's connector object. Previously the URL was only updated
after navigating to a new tab triggered a page-changed notification.

Also s/URL/Url in variable/field names for consistency.