Add g++-6 builds to travis-ci

The current linux/g++ testing (using a backported g++-4.8 on a
4-year-old Ubuntu) is quite ancient.  It's good as a baseline level of
support, but it means we aren't testing g++'s C++14 support at all
(which is why #334 happened).

This commit adds a docker-based travis-ci build using the debian
"testing" distribution, which will give us both another test system
(with different versions of build tools), while, more importantly, also
adding a build and test run using g++ in C++14 mode.
diff --git a/.travis.yml b/.travis.yml
index 87caad3..78e5184 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -4,53 +4,89 @@
   include:
   - os: linux
     compiler: gcc-4.8
-    env: PYTHON=2.7 CPP=11
+    env: PYTHON=2.7 CPP=11 GCC=4.8
+    addons:
+      apt:
+        sources:
+        - ubuntu-toolchain-r-test
+        - kubuntu-backports # cmake 2.8.12
+        packages:
+        - g++-4.8
+        - cmake
   - os: linux
     compiler: gcc-4.8
-    env: PYTHON=3.5 CPP=11
+    env: PYTHON=3.5 CPP=11 GCC=4.8
+    addons:
+      apt:
+        sources:
+        - ubuntu-toolchain-r-test
+        - deadsnakes
+        - kubuntu-backports # cmake 2.8.12
+        packages:
+        - g++-4.8
+        - python3.5-dev
+        - cmake
   - os: osx
     osx_image: xcode7.3
     env: PYTHON=2.7 CPP=14
   - os: osx
     osx_image: xcode7.3
     env: PYTHON=3.5 CPP=14
+  - compiler: gcc-6
+    services: docker
+    sudo: true
+    env: PYTHON=2.7 CPP=14 DOCKER=debian:testing NATIVE_DEPS=1
+    install:
+    - docker exec --tty "$containerid" apt-get -y --no-install-recommends install python2.7-dev python-scipy libeigen3-dev cmake make g++
+  - compiler: gcc-6
+    services: docker
+    sudo: true
+    env: PYTHON=3.5 CPP=14 DOCKER=debian:testing NATIVE_DEPS=1
+    install:
+    - docker exec --tty "$containerid" apt-get -y --no-install-recommends install python3.5-dev python3-scipy libeigen3-dev cmake make g++
 cache:
   directories:
   - $HOME/.cache/pip
   - ccache
-addons:
-  apt:
-    sources:
-      - ubuntu-toolchain-r-test
-      - deadsnakes
-      - kubuntu-backports # cmake 2.8.12
-    packages:
-      - g++-4.8
-      - python3.5
-      - python3.5-dev
-      - cmake
+before_install:
+- |
+  if [ -n "$DOCKER" ]; then
+    docker pull $DOCKER
+    export containerid=$(docker run --detach --tty \
+      --volume="$PWD":/pybind11 --workdir=/pybind11 \
+      --env="CC=$CC" --env="CXX=$CXX" --env="DEBIAN_FRONTEND=$DEBIAN_FRONTEND" \
+      --env=GCC_COLORS=\  \
+      $DOCKER)
+    docker exec --tty "$containerid" apt-get update
+    docker exec --tty "$containerid" apt-get -y upgrade
+    export SCRIPT_RUN_PREFIX="docker exec --tty $containerid"
+  fi
 install:
 - |
-  if [ "$TRAVIS_OS_NAME" = "linux" ]; then
-    export CXX=g++-4.8 CC=gcc-4.8;
-    pip install --user --upgrade pip virtualenv
-    virtualenv -p python$PYTHON venv
-  elif [ "$TRAVIS_OS_NAME" = "osx" ]; then
-    if [ "${PYTHON:0:1}" = "3" ]; then
-      PMAJOR=3; brew update; brew install python$PMAJOR;
-    else
-      curl -fsSL -O https://bootstrap.pypa.io/get-pip.py
-      sudo -H python get-pip.py
+  if [ -z "$NATIVE_DEPS" ]; then
+    if [ "$TRAVIS_OS_NAME" = "linux" ]; then
+      if [ -n "$GCC" ]; then export CXX=g++-$GCC CC=gcc-$GCC; fi
+      pip install --user --upgrade pip virtualenv
+      virtualenv -p python$PYTHON venv
+    elif [ "$TRAVIS_OS_NAME" = "osx" ]; then
+      if [ "${PYTHON:0:1}" = "3" ]; then
+        PMAJOR=3; brew update; brew install python$PMAJOR;
+      else
+        curl -fsSL -O https://bootstrap.pypa.io/get-pip.py
+        sudo -H python get-pip.py
+      fi
+      pip$PMAJOR install --user --upgrade pip virtualenv
+      python$PMAJOR -m virtualenv venv
     fi
-    pip$PMAJOR install --user --upgrade pip virtualenv
-    python$PMAJOR -m virtualenv venv
+    source venv/bin/activate
+    pip install numpy scipy
+
+    wget -q -O eigen.tar.gz https://bitbucket.org/eigen/eigen/get/3.2.9.tar.gz
+    tar xzf eigen.tar.gz
+    export CMAKE_EXTRA_ARGS="${CMAKE_EXTRA_ARGS} -DCMAKE_INCLUDE_PATH=eigen-eigen-dc6cfdf9bcec"
   fi
-  source venv/bin/activate
-  pip install numpy scipy
-- |
-  wget -q -O eigen.tar.gz https://bitbucket.org/eigen/eigen/get/3.2.9.tar.gz
-  tar xzf eigen.tar.gz
-  export CMAKE_INCLUDE_PATH=eigen-eigen-dc6cfdf9bcec
 script:
-- cmake -DPYBIND11_PYTHON_VERSION=$PYTHON -DPYBIND11_CPP_STANDARD=-std=c++$CPP
-- CTEST_OUTPUT_ON_FAILURE=TRUE make check -j 2
+- $SCRIPT_RUN_PREFIX cmake ${CMAKE_EXTRA_ARGS} -DPYBIND11_PYTHON_VERSION=$PYTHON -DPYBIND11_CPP_STANDARD=-std=c++$CPP
+- $SCRIPT_RUN_PREFIX make CTEST_OUTPUT_ON_FAILURE=TRUE check -j 2
+after_script:
+- if [ -n "$DOCKER" ]; then docker stop "$containerid"; docker rm "$containerid"; fi