Update Travis CI to Bionic & Xcode 11.2

- Fix Homebrew Ruby errors by forcing brew update before install.
- Remove use of custom Eigen 3.3.4 on Linux in favour of default Bionic
  3.3.4 package.
- Update Android NDK version to R20b and build for arm64-v8.
- Fix erroneous string -> STRING in iOS toolchain file.

Change-Id: I041c2a08b92b8307c12bd8967159beb6984e3c65
diff --git a/.travis.yml b/.travis.yml
index 7d14971..9d604a5 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -4,20 +4,20 @@
   fast_finish: true
   include:
   - os: linux
-    dist: xenial
+    dist: bionic
     sudo: required
     compiler: gcc
     env: CERES_BUILD_TARGET=LINUX
   - os: linux
-    dist: xenial
+    dist: bionic
     sudo: required
     compiler: gcc
     env: CERES_BUILD_TARGET=ANDROID
   - os: osx
-    osx_image: xcode9.4
+    osx_image: xcode11.2
     env: CERES_BUILD_TARGET=OSX
   - os: osx
-    osx_image: xcode9.4
+    osx_image: xcode11.2
     env: CERES_BUILD_TARGET=IOS
 
 env:
@@ -29,8 +29,8 @@
   - |
     if [[ "$CERES_BUILD_TARGET" == "ANDROID" ]]; then
       cd /tmp
-      wget https://dl.google.com/android/repository/android-ndk-r17b-linux-x86_64.zip
-      unzip -qq android-ndk-r17b-linux-x86_64.zip
+      wget https://dl.google.com/android/repository/android-ndk-r20b-linux-x86_64.zip
+      unzip -qq android-ndk-r20b-linux-x86_64.zip
     fi
 
 install:
@@ -49,7 +49,7 @@
     fi
   - |
     if [[ "$CERES_BUILD_TARGET" == "ANDROID" ]]; then
-      cmake -DCMAKE_TOOLCHAIN_FILE=/tmp/android-ndk-r17b/build/cmake/android.toolchain.cmake -DEIGEN_INCLUDE_DIR=/usr/local/include/eigen3 -DANDROID_ABI=armeabi-v7a -DANDROID_STL=c++_shared -DANDROID_NATIVE_API_LEVEL=android-24 -DMINIGLOG=ON -DBUILD_EXAMPLES=OFF $TRAVIS_BUILD_DIR
+      cmake -DCMAKE_TOOLCHAIN_FILE=/tmp/android-ndk-r20b/build/cmake/android.toolchain.cmake -DEIGEN_INCLUDE_DIR=/usr/include/eigen3 -DANDROID_ABI=arm64-v8a -DANDROID_STL=c++_shared -DANDROID_NATIVE_API_LEVEL=android-29 -DMINIGLOG=ON -DBUILD_EXAMPLES=OFF $TRAVIS_BUILD_DIR
     fi
   - |
     if [[ "$CERES_BUILD_TARGET" == "IOS" ]]; then
diff --git a/cmake/iOS.cmake b/cmake/iOS.cmake
index bb42802..4029f96 100644
--- a/cmake/iOS.cmake
+++ b/cmake/iOS.cmake
@@ -297,7 +297,7 @@
 
 # Set the find root to the iOS developer roots and to user defined paths.
 set(CMAKE_FIND_ROOT_PATH ${CMAKE_IOS_DEVELOPER_ROOT} ${CMAKE_OSX_SYSROOT}
-  ${CMAKE_PREFIX_PATH} CACHE string  "iOS find search path root" FORCE)
+  ${CMAKE_PREFIX_PATH} CACHE STRING  "iOS find search path root" FORCE)
 
 # Default to searching for frameworks first.
 set(CMAKE_FIND_FRAMEWORK FIRST)
diff --git a/travis/install_travis_linux_deps.sh b/travis/install_travis_linux_deps.sh
index 581cb4a..fd7cc78 100755
--- a/travis/install_travis_linux_deps.sh
+++ b/travis/install_travis_linux_deps.sh
@@ -3,19 +3,8 @@
 # Stop processing on any error.
 set -e
 
-# Install default versions of standard dependencies that are new enough in 14.04.
+# Install default versions of standard dependencies that are new enough in 18.04
 sudo apt-get install -y cmake
 sudo apt-get install -y libatlas-base-dev libsuitesparse-dev
 sudo apt-get install -y libgoogle-glog-dev libgflags-dev
-
-# Install Eigen 3.3.4 as the default 14.04 version is 3.2.0 in which the sparse solvers
-# have known poor performance.
-wget http://bitbucket.org/eigen/eigen/get/3.3.4.tar.gz -O /tmp/eigen-3.3.4.tar.gz
-tar -C /tmp -xzf /tmp/eigen-3.3.4.tar.gz
-rm /tmp/eigen-3.3.4.tar.gz
-# Fix detection of BLAS/LAPACK broken in 3.3.4 release.
-wget https://bitbucket.org/eigen/eigen/commits/dbab66d00651bf050d1426334a39b627abe7216e/raw -O /tmp/eigen-3.3.4.fortran.patch
-cd /tmp/eigen-eigen-5a0156e40feb && patch -p1 < /tmp/eigen-3.3.4.fortran.patch
-mkdir /tmp/eigen-3.3.4-build
-cd /tmp/eigen-3.3.4-build
-cmake /tmp/eigen-eigen-5a0156e40feb && make && sudo make install
+sudo apt-get install -y libeigen3-dev
diff --git a/travis/install_travis_osx_deps.sh b/travis/install_travis_osx_deps.sh
index ce02fe4..adb949e 100755
--- a/travis/install_travis_osx_deps.sh
+++ b/travis/install_travis_osx_deps.sh
@@ -12,6 +12,12 @@
   fi
 }
 
+# Manually trigger an update prior to installing packages to avoid Ruby
+# version related errors as per [1].
+#
+# [1]: https://github.com/travis-ci/travis-ci/issues/8552
+brew update
+
 install_if_not_installed cmake
 install_if_not_installed glog
 install_if_not_installed gflags