avoid string version comparisons in external.qt

We have learned from pyzmq that one should *always* parse version strings before comparing them.
add version comparison utility
    
all version strings are comparable by casting string elements to float('inf')
use NumericalVersion utility in external.qt
add check_version utility

using LooseVersion and explicitly catching TypeError, rather than the NumericalVersion subclass.
remove unused NumericalVersion
Merge pull request #2831 from minrk/qtversions

avoid string version comparisons in external.qt