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.