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"
Merge commit 'refs/changes/97/66597/4' of git://gold.eng.hq.xensource.com/git/github/openstack/nova into tmpbranch