currently, datapath program ids are assigned in portus, meaning the datapath has to loop through the array of programs every time it wants to look one up. it would be better if the datapath assigned the id based on the available slot and then told portus to use this id going forward. the main reason this isn't trivial is that it requires the datapath sending a response to portus, which isn't currently implemented.
see comments in #48