grc: complete rewrite of the nports feature to support (multiple) message ports

A big thanks to Bastian Boessel for his help and testing.