[ci] Split sanitizers job

It was running four different builds sequentially. Each should have been
its own job.
diff --git a/.circleci/config.yml b/.circleci/config.yml
index 72f1b4d..b13443f 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -88,7 +88,7 @@
       - run: clang -c src/harfbuzz.cc -DHB_NO_MT
       - run: clang -c src/hb-*.cc -DHB_NO_MT -DHB_TINY -DHB_NO_OT_FONT
 
-  sanitizers:
+  asan-ubsan:
     docker:
       - image: ubuntu:20.04
     steps:
@@ -96,15 +96,39 @@
       - run: apt update || true
       - run: DEBIAN_FRONTEND=noninteractive apt install -y python3 python3-pip ninja-build clang lld git binutils pkg-config ragel libfreetype6-dev libglib2.0-dev libcairo2-dev libicu-dev libgraphite2-dev
       - run: pip3 install meson==0.56.0
-      # asan+ubsan
-      - run: rm -rf build && meson build --default-library=static -Db_sanitize=address,undefined --buildtype=debugoptimized --wrap-mode=nodownload -Dexperimental_api=true
+      - run: CC=clang CXX=clang++ meson build --default-library=static -Db_sanitize=address,undefined --buildtype=debugoptimized --wrap-mode=nodownload -Dexperimental_api=true
       - run: ninja -Cbuild -j8 && meson test -Cbuild --print-errorlogs | asan_symbolize | c++filt
-      # tsan
-      - run: rm -rf build && meson build --default-library=static -Db_sanitize=thread --buildtype=debugoptimized --wrap-mode=nodownload -Dexperimental_api=true
+
+  tsan:
+    docker:
+      - image: ubuntu:20.04
+    steps:
+      - checkout
+      - run: apt update || true
+      - run: DEBIAN_FRONTEND=noninteractive apt install -y python3 python3-pip ninja-build clang lld git binutils pkg-config ragel libfreetype6-dev libglib2.0-dev libcairo2-dev libicu-dev libgraphite2-dev
+      - run: pip3 install meson==0.56.0
+      - run: CC=clang CXX=clang++ meson build --default-library=static -Db_sanitize=thread --buildtype=debugoptimized --wrap-mode=nodownload -Dexperimental_api=true
       - run: ninja -Cbuild -j8 && meson test -Cbuild --print-errorlogs | asan_symbolize | c++filt
+
+  msan:
+    docker:
+      - image: ubuntu:20.04
+    steps:
+      - checkout
+      - run: apt update || true
+      - run: DEBIAN_FRONTEND=noninteractive apt install -y python3 python3-pip ninja-build clang lld git binutils pkg-config ragel libfreetype6-dev libglib2.0-dev libcairo2-dev libicu-dev libgraphite2-dev
+      - run: pip3 install meson==0.56.0
       # msan, needs --force-fallback-for=glib,freetype2 also which doesn't work yet but runs fuzzer cases at least
-      - run: rm -rf build && meson build --default-library=static -Db_sanitize=memory --buildtype=debugoptimized --wrap-mode=nodownload -Dauto_features=disabled -Dtests=enabled -Dexperimental_api=true
+      - run: CC=clang CXX=clang++ meson build --default-library=static -Db_sanitize=memory --buildtype=debugoptimized --wrap-mode=nodownload -Dauto_features=disabled -Dtests=enabled -Dexperimental_api=true
       - run: ninja -Cbuild -j8 && meson test -Cbuild --print-errorlogs | asan_symbolize | c++filt
+
+  clang-cxx2a:
+    docker:
+      - image: ubuntu:20.04
+    steps:
+      - checkout
+      - run: apt update || true
+      - run: DEBIAN_FRONTEND=noninteractive apt install -y clang lld git binutils
       - run: clang -c src/harfbuzz.cc src/hb-subset*.cc -DHB_NO_MT -Werror -std=c++2a
 
   crossbuild-win32:
@@ -175,7 +199,10 @@
       - fedora-valgrind
       - alpine
      #- archlinux
-      - sanitizers
+      - asan-ubsan
+      - tsan
+      - msan
+      - clang-cxx2a
       - crossbuild-win32:
           filters: # must have filter or won't work as a dependency
             tags: