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().
struct consume_via_copy is in detail/copy_payload.hpp. Shall I put consume_noop next to it or create a separate file?