PROTON-2253: Introduce simple github actions CI

This is a simple CI job triggered by pushes to master and pull requests against
master it builds and tests on Ubuntu/Windows/macOS. It also produces some output
artifacts which have the install area and the generated python packages.

- Using python 3.6 as this is the version that works on all platforms tested
- Have to fix windows chocolately swig to 4.0.1 as 4.0.2 choco package is broken
- Disable ruby build on macOS due to some version mismatch issue
diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml
new file mode 100644
index 0000000..ba6d3a0
--- /dev/null
+++ b/.github/workflows/c-cpp.yml
@@ -0,0 +1,99 @@
+name: Qpid Proton Github Actions CI
+
+on:
+  push:
+    branches: [ master ]
+  pull_request:
+    branches: [ master ]
+
+jobs:
+  build:
+    runs-on: ${{ matrix.os }}
+    strategy:
+      matrix:
+        os: [ubuntu-latest, windows-latest, macOS-latest]
+        buildType: [RelWithDebInfo]
+        include:
+        - os: windows-latest
+          cmake_extra: '-A x64 -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake'
+          cmake_generator: '-G "Visual Studio 16 2019"'
+        - os: macOS-latest
+          pkg_config_path: '/usr/local/opt/openssl@1.1/lib/pkgconfig'
+          cmake_extra: '-DBUILD_RUBY=no'
+    env:
+      BuildType: ${{matrix.buildType}}
+      BuildDir: ${{github.workspace}}/BLD
+      InstallPrefix: ${{github.workspace}}/INSTALL
+      PKG_CONFIG_PATH: ${{matrix.pkg_config_path}}
+      VCPKG_DEFAULT_TRIPLET: x64-windows
+    steps:
+    - uses: actions/checkout@v2
+    - name: Create Build and Install directories
+      run: mkdir -p "${BuildDir}" "{InstallPrefix}"
+      shell: bash
+    - name: Setup python
+      uses: actions/setup-python@v2
+      with:
+        python-version: 3.6
+        architecture: x64
+    - name: Install python dependencies
+      run: |
+        python -m pip install --upgrade pip
+        python -m pip install setuptools wheel tox unittest2
+    - name: Install Linux dependencies
+      if: ${{ runner.os == 'Linux' }}
+      run: |
+        sudo apt install -y swig libpython3-dev libsasl2-dev libjsoncpp-dev
+    - name: Install Windows dependencies
+      if: ${{ runner.os == 'Windows' }}
+      run: |
+        choco install -y swig --version=4.0.1
+        vcpkg install jsoncpp
+        vcpkg integrate install
+    - name: Install MacOS dependencies
+      if: ${{ runner.os == 'macOS' }}
+      run: |
+        brew install libuv swig pkgconfig jsoncpp
+    - name: cmake configure
+      working-directory: ${{env.BuildDir}}
+      run: cmake "${{github.workspace}}" "-DCMAKE_BUILD_TYPE=${BuildType}" "-DCMAKE_INSTALL_PREFIX=${InstallPrefix}" ${{matrix.cmake_extra}}
+      shell: bash
+    - name: cmake build/install
+      run: cmake --build "${BuildDir}" --config ${BuildType} -t install
+      shell: bash
+    - name: Upload Install
+      uses: actions/upload-artifact@v2
+      with:
+        name: qpid_proton_pkg_${{matrix.os}}_${{matrix.buildType}}
+        path: ${{env.InstallPrefix}}
+    - name: Upload python packages
+      uses: actions/upload-artifact@v2
+      with:
+        name: python-pkgs
+        path: ${{env.BuildDir}}/python/pkgs
+    - name: ctest
+      continue-on-error: true
+      working-directory: ${{env.BuildDir}}
+      run: ctest -C ${BuildType} -V -T Test --no-compress-output
+      shell: bash
+    - name: Upload Test results
+      uses: actions/upload-artifact@v2
+      with:
+        name: Test_Results_${{matrix.os}}_${{matrix.buildType}}
+        path: ${{env.BuildDir}}/Testing/**/*.xml
+    - name: Upload Python & C build directories on failure
+      uses: actions/upload-artifact@v2
+      if: failure()
+      with:
+        name: Debug-python-C-BLD_${{matrix.os}}_${{matrix.buildType}}
+        path: |
+          ${{env.BuildDir}}/c
+          ${{env.BuildDir}}/python
+    - name: Environment (Linux/Windows)
+      if: ${{ always() && runner.os != 'macOS' }}
+      run: env -0 | sort -z | tr '\0' '\n'
+      shell: bash
+    - name: Environment (macOS)
+      if: ${{ always() && runner.os == 'macOS' }}
+      run: env | sort
+      shell: bash