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.
Change order of metadata actions, check initialized and version
Attributes beginning __ are now reserved for internal use
Reserve column names beginning with __
Bump table version, prefix internal attrs with __

Note this is a breaking change.

Table API version is now stored as an int.
Forgot to pass replace to _add_meta_map
Fix add_meta_map to be callable from initialize
Update test2855MetadataMethods with __prefixes
Remove internal attrs if replace and init flags present
Add metadata tests to TestHdfStorage
Add more metadata tests to TestTables
Add tables version check, throw exception for v1 tables
Test that exception is thrown for metadata methods on v1 tables
Add unit-test for invalid column names
Remove remaining ref to editor.
merge develop -Dorg -Ssuccess-only: PR 3208 (Update the OMERO install script to test Web login with CSRF (rebased onto develop))
merge develop -Dorg -Ssuccess-only: PR 3237 (Fix web attachment error msg develop)
merge develop -Dorg -Ssuccess-only: PR 3249 (Tables set all metadata 12606)
merge develop -Dorg -Ssuccess-only: PR 3264 (Support for collapsing unique light paths (rebased onto develop))