[GVA] Add request to get network peers with enough info to make a real p2p client

I have made a python helper to help client keep a list of consensus blockchain nodes.

See : https://forum.duniter.org/t/fonction-daide-pour-avoir-un-vrai-client-python-p2p/7821

The BMA API needs two requests to get all info of nodes (network/ws2p/heads, network/peers).

GVA should be able to provide one request only.

Response should be a paginated list of nodes, a Node is an object with Head document and Peer document together.

Node {
    Head: {
        version: int,
        signature: str,
        api: str,
        pubkey: str,
        blockstamp: BlockUID {
            number: int,
            hash: str
        },
        ws2pid: str,
        software: str,
        software_version: str,
        pow_prefix: str,
        free_member_room: int,
        free_mirror_room: int
    },
    Peer: {
        version: int,
        currency: str,
        pubkey: str,
        block_uid: BlockUID {
            number: int,
            hash: str
        },
    endpoints: [str, ...],
    signature: str
    }
}

To not bind the Node object to the ws2p protocol Head document, we can put Head relevant information directly in the Node properties:

Node {
    pubkey: str,
    blockstamp: BlockUID {
        number: int,
        hash: str
    },
    software: str,
    software_version: str,
    Peer: {
        version: int,
        currency: str,
        pubkey: str,
        block_uid: BlockUID {
            number: int,
            hash: str
        },
    endpoints: [str, ...],
    signature: str
    }
}

With the drawback that we do not have the Head signature anymore.

Edited by Vincent Texier