Parse libxc_docs.txt file, return dictionary with mapping:
    libxc_id --> info_dict

def parse_libxc_docs(path):
    """
    Parse libxc_docs.txt file, return dictionary with mapping:
    libxc_id --> info_dict
    """
    def parse_section(section):
	d = {}
	for l in section:
	    key, value = l.split(":")
	    key = key.strip()
	    d[key] = value.strip()

	return int(d["Number"]), d

    d = OrderedDict()
    with open(path, "rt") as fh:
	section = []
	for line in fh:
	    if not line.startswith("-"):
		section.append(line)
	    else:
		num, entry = parse_section(section)
		assert num not in d
		d[num] = entry
		section = []
	assert not section

    return d