Fix the computation of the list of reserved IP addresses
Fix the computation of the list of reserved IP addresses

After refactoring the code for network addresses to Haskell, a
regression appeared that added 30 to all IP addresses in the generated
list. Since the code for generating the list used just 'show' and look
for 0s and 1s in the string (and treating anything else as 0), it turned
out that after adding a separate type for address pools, the strings
become

    "AddressPool {apReservations = ...}"

and the initial part of the string was exactly the mysterious 30
characters.

This fix replaces this by switching to correct types and iterating over
the bits in BitArray.

Fixes #1068.

Signed-off-by: Petr Pudlak <9d19625f8ee825a2c398462ed335cbcf98f79c32@google.com>
Reviewed-by: Klaus Aehlig <4ce51de36d9068cd7db2eec1151e0f3f95419008@google.com>

yiannist/ganeti,grnet/snf-ganeti,mbakke/ganeti,leshchevds/ganeti,mbakke/ganeti,andir/ganeti,onponomarev/ganeti,bitemyapp/ganeti,onponomarev/ganeti,leshchevds/ganeti,andir/ganeti,ganeti/ganeti,grnet/snf-ganeti,andir/ganeti,yiannist/ganeti,leshchevds/ganeti,bitemyapp/ganeti,yiannist/ganeti,mbakke/ganeti,ganeti/ganeti,ganeti/ganeti