Improve input validation for services_dhcp_relay
Improve input validation for services_dhcp_relay

While looking at interactions between DHCP Relay and DHCP Server, I noticed a few annoying/inconsistent things in driving the UI:
1) If there were validation errors on the Destination Server IP Addresses that the user input, messages would be given about invalid addresses but the data in the Destination Server row(s) would be reset to what it was before the user started editing, losing whatever they changes they had been trying to make so far.
2) Empty rows would be reported as errors. The code already did some ignoring of empty rows, but not entirely successfully.
This change:
a) Reports which IP addresses were invalid
b) Preserves the data that the user tried to enter, so they can correct it and try again.
c) Ignores any empty rows, only reporting an error if all the rows are empty.
pfsense/pfsense,phil-davis/pfsense,ptorsten/pfsense,pfsense/pfsense,NOYB/pfsense,ptorsten/pfsense,brunostein/pfsense,jxmx/pfsense,brunostein/pfsense,ptorsten/pfsense,phil-davis/pfsense,NewEraCracker/pfsense,NewEraCracker/pfsense,NOYB/pfsense,dennypage/pfsense,pfsense/pfsense,phil-davis/pfsense,brunostein/pfsense,NewEraCracker/pfsense,dennypage/pfsense,NOYB/pfsense,dennypage/pfsense,phil-davis/pfsense,dennypage/pfsense,NewEraCracker/pfsense,jxmx/pfsense,pfsense/pfsense,jxmx/pfsense