Correct host managers free disk calculation

Take lower of disk_least_available/free_disk_gb if they exist.

When an instance exists in the database but not on the hypervisor
(which can happen in some error cases), the 'missing' instance
is included in the calculation of 'free_gb' but not included in
'disk_available_least'.
Need to take the value that represents the minimum amount of free
disk space available.

Testing:
COMPUTE_NODES in fakes.py includes the 4 possible test cases:
    disk_least_available or free_disk_gb = free_disk_mb
        None             or     512      =    524288
        1024             or    None      =   1048576
        3333             or    3072      =   3145728
        8192             or    8888      =   8388608
   test: test_host_manager.py
           test_get_all_host_states:
             Already has existing tests looking for these
             cases - I've modifed the test data (in fakes.py)
             rather than creating new test data.
             Added check for Warning message for node 3 where
             physical disk (3333) is greater than database (3072)
         No impact on other tests.

Change-Id: I4a18bf023a64d0cb198f77aab9daecb0786e93ff
Closes-Bug: 1253599
Change assertTrue(isinstance()) by optimal assert

Some of tests use different method of assertTrue(isinstance(A, B)) or
assertEqual(type(A), B). The correct way is to use assertIsInstance(A,
B) provided by testtools.

Change-Id: I4a5413f9d90d2e581044885a440a46bf3d76598f
Closes-Bug: #1268480
Merge "Change assertTrue(isinstance()) by optimal assert"
Merge "Correct host managers free disk calculation"
Don't allow compute_node free_disk_gb to be None

As part of commit 5668870, we now explicitly guard against the case
free_disk_gb is None or unset. However, this should never happen
since resource tracker always sets it and guarding against this case
isn't actually needed to fix the bug in question.

Also, simplify the code a little to make the intent more clear. We
assume that free_disk_gb is always set, but we want to use
disk_available_least where the driver has set it. The case where
disk_available_least is less than free_disk_gb is the exceptional
case we want to guard against.

Change-Id: I3973eab6b4ca016df546de8b57245fc0d0f03a80
Merge "Don't allow compute_node free_disk_gb to be None"