CI: Add macOS build and refactor

Adds a build on macOS using Xcode with Apple Clang. 

Also refactors as cleanup and in preparation for cache implementation.
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index d4d8c9f..bfc775b 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -2,38 +2,40 @@
 on: [push, pull_request]
 jobs:
   build:
-    runs-on: ubuntu-20.04
-    env:
-      CC: gcc-10
-      CXX: g++-10
+    runs-on: ${{ matrix.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        os: [ubuntu-latest, macos-latest]
+
     steps:
+    - uses: actions/checkout@v2
+    - name: Set GCC & G++ 10 compiler (on Linux)
+      if: runner.os == 'Linux'
+      run: echo "CC=gcc-10" >> $GITHUB_ENV && echo "CXX=g++-10" >> $GITHUB_ENV
     - uses: actions/setup-python@v2
-    - name: Install dependencies
-      run: |
-        DEBIAN_FRONTEND=noninteractive sudo apt-get update || true
-        DEBIAN_FRONTEND=noninteractive sudo apt-get install -y ninja-build gcc-10 g++-10
-        pip install --upgrade pip
-        pip install setuptools
-        pip install meson
+
     - uses: ilammy/setup-nasm@v1
       with:
         version: 2.15.05
-    - uses: actions/checkout@v2
-    - name: Setup aom
+    - uses: seanmiddleditch/gha-setup-ninja@v3
+    - run: pip install meson
+    - name: Build aom
       working-directory: ./ext
       run: bash aom.cmd
-    - name: Setup dav1d
+    - name: Build dav1d
       working-directory: ./ext
       run: bash dav1d.cmd
-    - name: Setup rav1e
+    - name: Build rav1e
       working-directory: ./ext
       run: bash rav1e.cmd
-    - name: Setup libgav1
+    - name: Build libgav1
       working-directory: ./ext
       run: bash libgav1.cmd
-    - name: Setup libyuv
+    - name: Build libyuv
       working-directory: ./ext
       run: bash libyuv.cmd
+
     - name: Prepare libavif (cmake)
       run: |
         mkdir build && cd build
@@ -41,6 +43,7 @@
     - name: Build libavif (make)
       working-directory: ./build
       run: make -j $(($(nproc) + 1))
-    - name: Run AVIF Tests
+    - name: Run AVIF Tests (on Linux)
+      if: runner.os == 'Linux'
       working-directory: ./build
       run: ./aviftest ../tests/data