THRIFT-3718 Reduce size of docker image for build environment

This closes #931
diff --git a/build/docker/ubuntu/Dockerfile b/build/docker/ubuntu/Dockerfile
index 5180fca..58a361c 100644
--- a/build/docker/ubuntu/Dockerfile
+++ b/build/docker/ubuntu/Dockerfile
@@ -21,22 +21,27 @@
 ENV DEBIAN_FRONTEND noninteractive
 
 # General dependencies
-RUN apt-get update && apt-get install -y \
+RUN apt-get update && apt-get install -y --no-install-recommends \
       apt-transport-https \
+      autoconf \
       automake \
       bison \
+      build-essential \
       clang \
       cmake \
+      curl \
       debhelper \
       flex \
       g++ \
       git \
       libtool \
       make \
+      ninja-build \
       pkg-config
 
 # C++ dependencies
-RUN apt-get update && apt-get install -y \
+# libevent and OpenSSL are needed by D too
+RUN apt-get update && apt-get install -y --no-install-recommends \
       libboost-dev \
       libboost-filesystem-dev \
       libboost-program-options-dev \
@@ -44,17 +49,23 @@
       libboost-test-dev \
       libboost-thread-dev \
       libevent-dev \
-      libqt4-dev \
-      libssl-dev
+      libssl-dev \
+      qt5-default \
+      qtbase5-dev \
+      qtbase5-dev-tools
 
 # Java dependencies
-RUN apt-get update && apt-get install -y \
+RUN apt-get update && apt-get install -y --no-install-recommends \
       ant \
+      ant-optional \
       openjdk-7-jdk \
       maven \
     && update-java-alternatives -s java-1.7.0-openjdk-amd64
 
 # Python dependencies
+# TODO:
+# Install twisted and zope.interface via pip. we need twisted at ./configure time, otherwise
+# py.twisted tests are skipped.
 RUN apt-get update && apt-get install -y --no-install-recommends \
       python-all \
       python-all-dbg \
@@ -68,13 +79,13 @@
       python3-pip
 
 # Ruby dependencies
-RUN apt-get update && apt-get install -y \
+RUN apt-get update && apt-get install -y --no-install-recommends \
       ruby \
       ruby-dev \
     && gem install bundler rake
 
 # Perl dependencies
-RUN apt-get update && apt-get install -y \
+RUN apt-get update && apt-get install -y --no-install-recommends \
       libbit-vector-perl \
       libclass-accessor-class-perl \
       libcrypt-ssleay-perl \
@@ -82,7 +93,7 @@
       libnet-ssleay-perl
 
 # Php dependencies
-RUN apt-get update && apt-get install -y \
+RUN apt-get update && apt-get install -y --no-install-recommends \
       php5 \
       php5-dev \
       php5-cli \
@@ -91,12 +102,12 @@
       phpunit
 
 # GlibC dependencies
-RUN apt-get update && apt-get install -y libglib2.0-dev
+RUN apt-get update && apt-get install -y --no-install-recommends libglib2.0-dev
 
 # Erlang dependencies
 RUN echo 'deb http://packages.erlang-solutions.com/debian trusty contrib' > /etc/apt/sources.list.d/erlang_solutions.list && \
     curl -sSL http://packages.erlang-solutions.com/debian/erlang_solutions.asc | apt-key add - && \
-    apt-get update && apt-get install -y \
+    apt-get update && apt-get install -y --no-install-recommends \
       erlang-base \
       erlang-eunit \
       erlang-dev \
@@ -107,44 +118,42 @@
 RUN curl -sSL https://storage.googleapis.com/golang/go1.4.3.linux-amd64.tar.gz | tar -C /usr/local/ -xz
 ENV PATH /usr/local/go/bin:$PATH
 
-
 # Haskell dependencies
-RUN apt-get update && apt-get install -y \
+RUN apt-get update && apt-get install -y --no-install-recommends \
       ghc \
-      cabal-install \
-      libghc-binary-dev \
-      libghc-network-dev \
-      libghc-http-dev \
-      libghc-hashable-dev \
-      libghc-unordered-containers-dev \
-      libghc-vector-dev
+      cabal-install
+# Packages tend to be overwritten by build process since we're currently calling cabal update
+#       libghc-binary-dev \
+#       libghc-network-dev \
+#       libghc-http-dev \
+#       libghc-hashable-dev \
+#       libghc-unordered-containers-dev \
+#       libghc-vector-dev
 
 # Haxe
-RUN apt-get update && apt-get install -y \
+RUN apt-get update && apt-get install -y --no-install-recommends \
       neko \
       neko-dev \
       libneko0 \
-    && mkdir -p /tmp/haxe /usr/lib/haxe && \
-    curl http://haxe.org/website-content/downloads/3.2.0/downloads/haxe-3.2.0-linux64.tar.gz -o /tmp/haxe/haxe-3.2.0-linux64.tar.gz && \
-    tar -xvzf /tmp/haxe/haxe-3.2.0-linux64.tar.gz -C /usr/lib/haxe --strip-components=1 && \
+    && mkdir -p /usr/lib/haxe && \
+    curl http://haxe.org/website-content/downloads/3.2.0/downloads/haxe-3.2.0-linux64.tar.gz | \
+    tar -C /usr/lib/haxe --strip-components=1 -xz && \
     ln -s /usr/lib/haxe/haxe /usr/bin/haxe && \
     ln -s /usr/lib/haxe/haxelib /usr/bin/haxelib && \
     mkdir -p /usr/lib/haxe/lib  && \
     chmod -R 777 /usr/lib/haxe/lib && \
     haxelib setup /usr/lib/haxe/lib && \
-    haxelib install hxcpp && \
-    rm -rf /tmp/haxe
-
+    haxelib install hxcpp
 
 # Node.js dependencies
-RUN apt-get update && apt-get install -y \
+RUN apt-get update && apt-get install -y --no-install-recommends \
       nodejs \
       nodejs-dev \
       nodejs-legacy \
       npm
 
 # CSharp dependencies
-RUN apt-get update && apt-get install -y \
+RUN apt-get update && apt-get install -y --no-install-recommends \
       libmono-system-web2.0-cil \
       mono-complete \
       mono-devel \
@@ -169,16 +178,16 @@
 # Dart dependencies
 RUN curl https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \
     curl https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list > /etc/apt/sources.list.d/dart_stable.list && \
-    apt-get update && apt-get install -y dart
+    apt-get update && apt-get install -y --no-install-recommends dart
 ENV PATH /usr/lib/dart/bin:$PATH
 
 # Lua dependencies
-RUN apt-get update && apt-get install -y \
+RUN apt-get update && apt-get install -y --no-install-recommends \
       lua5.2 \
       lua5.2-dev
 
 # MinGW dependencies
-RUN apt-get update && apt-get install -y \
+RUN apt-get update && apt-get install -y --no-install-recommends \
       mingw32 \
       mingw32-binutils \
       mingw32-runtime \