• Implement history states and hash changes.

    This change implements handling history state entries and hash change
    history entries. The constellation is in charge of managing session
    history and traversals. The History object is in charge of updating all
    state on the script/dom side of things.
    
    The resource thread stores the serialized history state data. This data
    must be stored outside the script thread as the script thread may be
    shut down if its document is purged during history pruning. Storing the
    state data allows for retrieval of the state data at a later time even
    if the document had to be recreated.
    
    Each state is tracked using a state ID which is a UUID.
    
    Traversal tasks are now queued on the history traversal task source. The
    runnable waits synchronously on the constellation to finish handling the
    traversal. This allows for tests to use setTimeout to wait for a
    traversal to be handled before the callback has a chance of being
    called.
    cbrewster committed Feb 17, 2017