Sacrifice performance for thread safety

Issue #521 is, as far as I can tell, a race condition involving the fact that only one `LabelThrowable` is ever created. This throwable gets its value reassigned with every break statement, and two threads doing it at the same time with different tags breaks it severely, causing the errors we've been getting.

This PR will resolve that by creating a new throwable every time `break` is called. This may cause performance problems, and using one instance per thread may be preferable. I can implement that if wanted.