text: Title: Method/exception for gracefully killing a crawl
  Body: There doesn't seem to be any mechanism to gracefully kill an entire crawl from inside the crawl. I've had to do it a hacky way with a global variable. Simplified example:
  
  ```
  global global_crawler_process
  
  class MySpider():
      ...
      except Exception:
          kill_crawl()
  
  def main():
      globals global_crawler_process
  
      global_crawler_process = CrawlerProcess(scrapy_settings)
      global_crawler_process.crawl(MySpider)
  
  def kill_crawl():
      globals global_crawler_process
      # Uses SIGABRT (Abort signal)
      global_crawler_process._signal_shutdown(22, 0)
  
  
  class MySpider():
      ...
      except Exception:
          kill_crawl()
  
  ```
  
  Note: This is distinct from `CloseSpider` which only closes the current spider.