'Constructor.
Populates this Loader\'s kind and properties map. Also registers it with
the bulk loader, so that all you need to do is instantiate your Loader,
and the bulkload handler will automatically use it.
Args:
kind: a string containing the entity kind that this loader handles
properties: list of (name, converter) tuples.
This is used to automatically convert the CSV columns into properties.
The converter should be a function that takes one argument, a string
value from the CSV file, and returns a correctly typed property value
that should be inserted. The tuples in this list should match the
columns in your CSV file, in order.
For example:
[(\'name\', str),
(\'id_number\', int),
(\'email\', datastore_types.Email),
(\'user\', users.User),
(\'birthdate\', lambda x: datetime.datetime.fromtimestamp(float(x))),
(\'description\', datastore_types.Text),'

def __init__(self, kind, properties):

    Validate(kind, basestring)
    self.__kind = kind
    Validate(properties, list)
    for (name, fn) in properties:
        Validate(name, basestring)
        assert callable(fn), ('Conversion    function    %s    for    property    %s    is    not    callable.' % (fn, name))
    self.__properties = properties
    Loader.__loaders[kind] = self
