Add a duplicate() function to BroadcastEndpoint

This function returns a new endpoint containing exactly the same items as the current one and reading from the same BroadcastQueue.