Returns an instance of previously registered scanner
        with the specified properties.

def get(scanner_class, properties):
    """ Returns an instance of previously registered scanner
        with the specified properties.
    """
    assert issubclass(scanner_class, Scanner)
    assert is_iterable_typed(properties, basestring)
    scanner_name = str(scanner_class)

    if not registered(scanner_name):
        raise BaseException ("attempt to get unregisted scanner: %s" % scanner_name)

    relevant_properties = __scanners[scanner_name]
    r = property.select(relevant_properties, properties)

    scanner_id = scanner_name + '.' + '-'.join(r)

    if scanner_id not in __scanner_cache:
        __scanner_cache[scanner_id] = scanner_class(r)

    return __scanner_cache[scanner_id]