Returns {name: Feature}

def _load_features(root):
    """Returns {name: Feature}"""
    out = collections.OrderedDict()
    for elem in root.findall('feature'):
        name = elem.attrib['name']
        api = elem.attrib['api']
        number = tuple([int(x) for x in elem.attrib['number'].split('.')])
        requires = [_load_require(x) for x in elem.findall('require')]
        removes = [_load_remove(x) for x in elem.findall('remove')]
        comment = elem.get('comment')
        out[name] = Feature(name, api, number, requires, removes, comment)
    return out