Remove start_routine dependence on tls_addr

Previously start_routine directly referenced the tls_addr variable passed into
its parent function as an argument. Now we package that up tls_addr and pass
it to the nested function explicitly. TBB (or more likely C++) didn't like the
old way of doing things for some reason.