gluon-core: add node_id() to gluon.util