Change the way of managing static IPs

Now StaticIPManager produces an unused IP first when it is available.
StaticIPManager also does not hold 'free' IPs and 'used' IPs, instead it only holds 'ip_pools' and indexes of IPs that are used.
New available_ips method is added onto StaticIPManager, which returns number of free IPs from pool.