Create a new experiment using the given SCO-API create experiment Url.

        Parameters
        ----------
        url : string
            Url to POST experiment create request
        name : string
            User-defined name for experiment
        subject_id : string
            Unique identifier for subject at given SCO-API
        image_group_id : string
            Unique identifier for image group at given SCO-API
        properties : Dictionary
            Set of additional properties for created experiment. Argument may be
            None. Given name will override name property in this set (if present).

        Returns
        -------
        string
            Url of created experiment resource

def create(url, name, subject_id, image_group_id, properties):
        """Create a new experiment using the given SCO-API create experiment Url.

        Parameters
        ----------
        url : string
            Url to POST experiment create request
        name : string
            User-defined name for experiment
        subject_id : string
            Unique identifier for subject at given SCO-API
        image_group_id : string
            Unique identifier for image group at given SCO-API
        properties : Dictionary
            Set of additional properties for created experiment. Argument may be
            None. Given name will override name property in this set (if present).

        Returns
        -------
        string
            Url of created experiment resource
        """
        # Create list of key,value-pairs representing experiment properties for
        # request. The given name overrides the name in properties (if present).
        obj_props = [{'key':'name','value':name}]
        if not properties is None:
            # Catch TypeErrors if properties is not a list.
            try:
                for key in properties:
                    if key != 'name':
                        obj_props.append({'key':key, 'value':properties[key]})
            except TypeError as ex:
                raise ValueError('invalid property set')
        # Create request body and send POST request to given Url
        body = {
            'subject' : subject_id,
            'images' : image_group_id,
            'properties' : obj_props
        }
        try:
            req = urllib2.Request(url)
            req.add_header('Content-Type', 'application/json')
            response = urllib2.urlopen(req, json.dumps(body))
        except urllib2.URLError as ex:
            raise ValueError(str(ex))
        # Get experiment self reference from successful response
        return references_to_dict(json.load(response)['links'])[REF_SELF]