Allocate a new id for speculative output
speculation function is called when a new speculation buffer is needed.
It returns an id for the speculative output.
There can be multiple threads being speculated on concurrently.
This id is used by other speculation functions to keep the threads