MXVersion: remove cruft

self.versionstring is never used, and is most certainly not always a
string.
MXVersion: Allow comparing multiple versions

Add multiple version checking in one call to the new version comparison
functionality. It's a usual phenomenon that several small features or
enhancements are backported to the previous major Mendix version that is
in maintenance.

If, for example, a nifty new monitoring option will be implemented in
e.g. Mendix 4.2.0 and backported to the current maintenance update of
Mendix 3, e.g. 3.3.6, this can be checked in one go:

    >>> from m2ee.version import MXVersion
    >>> MXVersion('4') >= ('4.2','3.3.6')
    False
    >>> MXVersion('3') >= ('4.2','3.3.6')
    False
    >>> MXVersion('3.3.6') >= ('4.2','3.3.6')
    True
    >>> MXVersion('4.4') >= ('4.2','3.3.6')
    True

Normally, when working with m2ee, the current determined running runtime
version is via m2ee.config.get_runtime_version()

Without this feature, you need to do more work, like:

    runtime_version = m2ee.config.get_runtime_version()
    if (runtime_version >= 4.2 or
            runtime_version // 3 and runtime_version >= '3.3.6'):
	   do_stuff()

The same is available for the ==, < and // (in) operator:

    >>> MXVersion('4.4.2') == ('4.4.2','3.2.1')
    True
    >>> MXVersion('4.4.2') < ('4.5','3.2.1')
    True
    >>> MXVersion('4.4.2') // (3, 4)
    True
m2ee cli: add _report_not_implemented

The new _report_not_implemented function checks if the current Mendix
Runtime that is in use is equal or later than a specific version, or a
list of versions in case of e.g. a feature that is also backported to a
maintenance update of a previous major version.
Leverage version checking mechanism in m2ee cli

Change a lot of ERR_ACTION_NOT_FOUND handling to version checks before
executing the action.