Expand graphite URLs.

Graphite URLs are expanded into component pieces for easier manipulation.

Updating the frame.url requires the input to be blurred in order for the components to be updated (live updates cause weird things to happen to the components when new query strings are partially entered).

addresses #219