Refactor pub/priv DNS for multi-region support.

Public and private DNS was mostly segregated in the last refactor,
but this refactoring fully segregates them into two subclasses of
OpenStackNovaHost.

This refactor was necessary because the code was previously getting
private DNS by specifying the instanceid, but no region, which would
return the incorrect record if the instanceid was identical. By
splitting the classes apart it made it easier to modify the
constructor for private DNS without changing the public DNS code.

This change also modifies how private DNS domains are fetched.
Rather than fetching a domain based on the instance ID. It fetches
the domain based on the region, which simplifies the logic and
number of LDAP queries.

Change-Id: Idf2cc62d8916eb9e6cac218c16be76e0087d1333