Added OptionalThrowable and its spec.
Changed return type of throwable method in Event to OptionalThrowable.