'Constructor.
Populates this Exporters\'s kind and properties map.
Args:
kind: a string containing the entity kind that this exporter handles
properties: list of (name, converter, default) tuples.
This is used to automatically convert the entities to strings.
The converter should be a function that takes one argument, a property
value of the appropriate type, and returns a str or unicode.  The default
is a string to be used if the property is not present, or None to fail
with an error if the property is missing.
For example:
[(\'name\', str, None),
(\'id_number\', str, None),
(\'user\', str, None),
(\'birthdate\',
lambda x: str(datetime.datetime.fromtimestamp(float(x))),
None),
(\'description\', str, \'\'),'

def __init__(self, kind, properties):

    Validate(kind, basestring)
    self.kind = kind
    GetImplementationClass(kind)
    Validate(properties, list)
    for (name, fn, default) in properties:
        Validate(name, basestring)
        assert callable(fn), ('Conversion    function    %s    for    property    %s    is    not    callable.' % (fn, name))
        if default:
            Validate(default, basestring)
    self.__properties = properties
