Fix host manager node detection logic

This is in preparation for the change to HostManager in Nova that
combined with this one fixes the node detection logic in both Nova
and Ironic. Because the change in Nova will brake current Ironic
code, this has to land first.

The Ironic host manager used to rely on capabilities info to decide
which host state class to use, VM or baremetal. This has been broken
since host capabilities were removed from Nova. The logic to decide
on host state class is updated to now use values from the db and
tests are added to validate this.

In reality, the new detection logic will not work until the related
Nova change has landed too.

IronicNodeState is updated to store host stats as this is needed by
ComputeCapabilitiesFilter or otherwise it will return no hosts.

Change-Id: Ifa47d721835cfea87e9d0bce87c7853dd6724b98
Closes-Bug: #1260265