Correctly track session elements in dynamic build plan

When using a dynamic build plan, all elements are passed to the queue to be
enqueued, but are only actually enqueued when they become required.

This moves the tracking of session elements to the first queue rather than just
take everything that we pass to the queue (which would be all elements).

This is only used in the UI AFAICT, and doesn't actually affect the build.
diff --git a/src/buildstream/_scheduler/queues/queue.py b/src/buildstream/_scheduler/queues/queue.py
index badb539..b606258 100644
--- a/src/buildstream/_scheduler/queues/queue.py
+++ b/src/buildstream/_scheduler/queues/queue.py
@@ -62,6 +62,7 @@
     # Resources this queues' jobs want
     resources = []  # type: List[int]
     log_to_file = True
+    session_elements = None
 
     def __init__(self, scheduler, *, imperative=False):
 
@@ -172,6 +173,15 @@
     #          Scheduler / Pipeline facing APIs         #
     #####################################################
 
+    # set_session_elements()
+    #
+    # Track elements enqueued
+    #
+    # Args:
+    #    session_elements (list): a list to put session elements
+    def set_session_elements(self, session_elements):
+        self.session_elements = session_elements
+
     # enqueue()
     #
     # Enqueues some elements
@@ -381,6 +391,9 @@
     #    element (Element): The Element to enqueue
     #
     def _enqueue_element(self, element):
+        if self.session_elements is not None:
+            self.session_elements.append(element)
+
         status = self.status(element)
 
         if status == QueueStatus.SKIP:
diff --git a/src/buildstream/_stream.py b/src/buildstream/_stream.py
index a475bdb..748f32c 100644
--- a/src/buildstream/_stream.py
+++ b/src/buildstream/_stream.py
@@ -1814,7 +1814,7 @@
         if not track and not self.queues:
             # First non-track queue
             queue.set_required_element_check()
-
+            queue.set_session_elements(self.session_elements)
         self.queues.append(queue)
 
     # _enqueue_plan()
@@ -1828,7 +1828,6 @@
     def _enqueue_plan(self, plan, *, queue=None):
         queue = queue or self.queues[0]
         queue.enqueue(plan)
-        self.session_elements += plan
 
     # _run()
     #