def add_file(name, uploadable, metadata=None, overwrite=True, progress=None):
    """I upload a file (using the given IUploadable), then attach the
        resulting ImmutableFileNode to the directory at the given name. I set
        metadata the same way as set_uri and set_node. The child name must be
        a unicode string.

        ``progress`` either provides IProgress or is None

        I return a Deferred that fires (with the IFileNode of the uploaded
        file) when the operation completes."""
