* modifying reconcile function to take multiple ncs instead of one. we need this because for reconciliation in dual stack cases both IPs for a pod which can come from distinct ncs must be added at the same time
* adding comments, and renaming functions and types, to make the intent clearer
* adding some dummy values to cns.NewPodInfo invocations in tests, instead of empty strings since we need distinct interface ids
* adding a basic test for dual stack reconciliation
* adding validation for multiple ips for the same ip family on the same pod, which is not allowed
* changing direct use of interface id to pod key, which is better for reconcile flows using information from kubernetes instead of cni
* fixing comments to use host network terminology instead of system pod
* improving error message on duplicate ip from cni found; improving readability of error handling on ip parsing
* only checking for pod ips that are actually set on a pod
* InterfaceID should be set to containerID instead of interfaceName if CNS manage endpoint state is enabled
* add log in GetExistingIPConfig function to debug
* Fix UT (set containerid as pod interface id)
lint fix
* rebase
* linting
* rebase
* missing if condition for releaseIPConfig
* update azure-cns.yaml and add UTs
* rebase
* update program iptables changes
* linting
* fix broken tests
* fix podinfoprovider returns error when key is not found
* log when no endpoint state exist when reconcilling
* not remove endpoint state file on failure to read in restserver.restoreState()
* addressed comments
* update acn tag
* go get on acn
* addressed comments
Co-authored-by: Evan Baker <rbtr@users.noreply.github.com>