build: require gcc >= 5.3, boost >= 1.58, openssl >= 1.0.2

This effectively drops support for all versions of Ubuntu older than 16.04

Change-Id: Ie3ab7df9147e97f6467658a6399a4f9379f089c1
Refs: #4462
diff --git a/.waf-tools/compiler-features.py b/.waf-tools/compiler-features.py
index 502596c..1602f16 100644
--- a/.waf-tools/compiler-features.py
+++ b/.waf-tools/compiler-features.py
@@ -23,31 +23,8 @@
 @conf
 def check_std_to_string(self):
     if self.check_cxx(msg='Checking for std::to_string',
-                      fragment=STD_TO_STRING,
-                      features='cxx', mandatory=False):
+                      fragment=STD_TO_STRING, mandatory=False):
         self.define('HAVE_STD_TO_STRING', 1)
 
-VECTOR_INSERT_ERASE_CONST_ITERATOR = '''
-#include <vector>
-int
-main()
-{
-  std::vector<int> v;
-  std::vector<int>::const_iterator it = v.cbegin();
-
-  v.insert(it, 2);
-  it = v.cend() - 1;
-  v.erase(it);
-}
-'''
-
-@conf
-def check_vector_const_iterators(self):
-    if self.check_cxx(msg='Checking for std::vector::insert with const_iterator',
-                      fragment=VECTOR_INSERT_ERASE_CONST_ITERATOR,
-                      features='cxx', mandatory=False):
-        self.define('HAVE_VECTOR_INSERT_ERASE_CONST_ITERATOR', 1)
-
 def configure(conf):
     conf.check_std_to_string()
-    conf.check_vector_const_iterators()
diff --git a/.waf-tools/default-compiler-flags.py b/.waf-tools/default-compiler-flags.py
index 54db7ea..e9fdcc6 100644
--- a/.waf-tools/default-compiler-flags.py
+++ b/.waf-tools/default-compiler-flags.py
@@ -15,14 +15,14 @@
     errmsg = ''
     warnmsg = ''
     if cxx == 'gcc':
-        if ccver < (4, 8, 2):
+        if ccver < (5, 3, 0):
             errmsg = ('The version of gcc you are using is too old.\n'
-                      'The minimum supported gcc version is 4.8.2.')
+                      'The minimum supported gcc version is 5.3.0.')
         conf.flags = GccFlags()
     elif cxx == 'clang':
-        if ccver < (3, 4, 0):
+        if ccver < (3, 5, 0):
             errmsg = ('The version of clang you are using is too old.\n'
-                      'The minimum supported clang version is 3.4.0.')
+                      'The minimum supported clang version is 3.5.0.')
         conf.flags = ClangFlags()
     else:
         warnmsg = 'Note: %s compiler is unsupported' % cxx
@@ -164,16 +164,12 @@
 class GccFlags(GccBasicFlags):
     def getDebugFlags(self, conf):
         flags = super(GccFlags, self).getDebugFlags(conf)
-        if self.getCompilerVersion(conf) < (5, 1, 0):
-            flags['CXXFLAGS'] += ['-Wno-missing-field-initializers']
-        flags['CXXFLAGS'] += ['-fdiagnostics-color'] # gcc >= 4.9
+        flags['CXXFLAGS'] += ['-fdiagnostics-color']
         return flags
 
     def getOptimizedFlags(self, conf):
         flags = super(GccFlags, self).getOptimizedFlags(conf)
-        if self.getCompilerVersion(conf) < (5, 1, 0):
-            flags['CXXFLAGS'] += ['-Wno-missing-field-initializers']
-        flags['CXXFLAGS'] += ['-fdiagnostics-color'] # gcc >= 4.9
+        flags['CXXFLAGS'] += ['-fdiagnostics-color']
         return flags
 
 class ClangFlags(GccBasicFlags):
diff --git a/.waf-tools/type_traits.py b/.waf-tools/type_traits.py
deleted file mode 100644
index efc4e3d..0000000
--- a/.waf-tools/type_traits.py
+++ /dev/null
@@ -1,15 +0,0 @@
-# -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
-
-def checkForTypeProperty(conf, prop, tparams):
-    if conf.check_cxx(msg=('Checking for std::%s' % prop),
-                      fragment=('#include <type_traits>\nstatic_assert(std::%s<%s>::value, "");' %
-                                (prop, tparams)),
-                      features='cxx', mandatory=False):
-        define = 'HAVE_' + prop.upper()
-        conf.define(define, 1)
-        conf.env[define] = True
-
-def configure(conf):
-    checkForTypeProperty(conf, 'is_default_constructible', 'int')
-    checkForTypeProperty(conf, 'is_nothrow_move_constructible', 'int')
-    checkForTypeProperty(conf, 'is_nothrow_move_assignable', 'int')