Changes with Apache Traffic Server 8.0.2
  #3601 - Add TLSv1.3 cipher suites for OpenSSL-1.1.1
  #3927 - cppapi :InterceptPlugin fix
  #3939 - Make sure the index stays positive
  #4217 - Fix a regression in the traffic_ctl host status subcommand.
  #4369 - Doc: Fix doc build to work with Sphinx 1.8.
  #4541 - Doc minor fixes.
  #4700 - sslheaders experimental plugin:  fix doc typo, improve container use.
  #4701 - Make sslheaders plugin better conform to documentation.
  #4716 - Revert "Two more places to check whether attempting half_closed connecton logic is feasible"
  #4752 - Added null value init for VConn args array
  #4799 - Doc: parent config has more features than balancer plugin
