A ComputeNodeTracker class, very similar to the resource_tracker.py
of nova[1] at nova/compute/resource_tracker.py with a few changes.
This does not implement any in memory cache for the compute_nodes
but reads the data everytime from the db. This can be improved or
kept as is. This also imposes the compute_node object contract on
the driver API for available resources so that random keys are not
used instead the object fields are honored.
[1]: https://github.com/openstack/nova/
Change-Id: I1e3aa35ad9927b0d29c8970a5fa3cb6530df281f