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.
Merge pull request #49 from bpwook/static_ip

Re-factor the implementation of the StaticIPManager in order for it to run faster with less resources.