Fix mock_storage in unittest
Check table metadata value type against Python type not numpy

Pytables may store values as numpy types (auto-converting in some cases) or native python types, I think it depends on the version. The numpy types appear to be derived from the native Python types, so isinstance should be more reliable.
Fix table.setAllMetadata

setAllMetadata now removes all existing user metadata and replaces it with the given map.

Note additional type-checking in HdfStorage.add_meta_map has also been added.