Fixed bug that cause Service exceptions to cause aborts

If a Service threw an exception during the ending of a processing transition (e.g. end of Event), the exception would cause an abort rather than being propagated as expected. The problem was the Service signal was generated during the destructor of a ‘guard’ class instance. In C++11 those destructors are now implicitly noexcept(true) which caused the abort. The destructor were changed to noexcept(false) and a new method ‘allowThrow()’ was added which is used to avoid throwing an exception while an exception is being propagated out of the function which uses the guard.