Creates a node with the mandatory attributes name and handle_id also sets type label.

    :param manager: Manager to handle sessions and transactions
    :param name: Node name
    :param meta_type_label: Node meta type
    :param type_label: Node label
    :param handle_id: Unique id
    :param legacy: Backwards compatibility

    :type manager: norduniclient.contextmanager.Neo4jDBSessionManager
    :type name: str|unicode
    :type meta_type_label: str|unicode
    :type type_label: str|unicode
    :type handle_id: str|unicode
    :type legacy: Boolean

    :rtype: dict|neo4j.v1.types.Node

def create_node(manager, name, meta_type_label, type_label, handle_id, legacy=True):
    """
    Creates a node with the mandatory attributes name and handle_id also sets type label.

    :param manager: Manager to handle sessions and transactions
    :param name: Node name
    :param meta_type_label: Node meta type
    :param type_label: Node label
    :param handle_id: Unique id
    :param legacy: Backwards compatibility

    :type manager: norduniclient.contextmanager.Neo4jDBSessionManager
    :type name: str|unicode
    :type meta_type_label: str|unicode
    :type type_label: str|unicode
    :type handle_id: str|unicode
    :type legacy: Boolean

    :rtype: dict|neo4j.v1.types.Node
    """
    if meta_type_label not in META_TYPES:
        raise exceptions.MetaLabelNamingError(meta_type_label)
    q = """
        CREATE (n:Node:%s:%s { name: { name }, handle_id: { handle_id }})
        RETURN n
        """ % (meta_type_label, type_label)
    with manager.session as s:
        if legacy:
            return s.run(q, {'name': name, 'handle_id': handle_id}).single()['n'].properties
        return s.run(q, {'name': name, 'handle_id': handle_id}).single()['n']