add T& front() and void pop() capabilities to spsc_queue

User might want to pop elements conditionally, based on the value of the element. This PR makes possible to peek into the queue via front() and pop a single element from the front of the queue using pop().
the implementation of pop() could be simplified by implementing it via consume_one() with an empty functor. this simplifies the code a bit