Use getSymbol() instead of getUnit() in metadata panel
Unifying brackets for units [%] -> (%) in metadata forms
once map key is found, can stop looking
Hopefully fix permgen with fewer inner classes

All the inner Functions for performing the conversion
of measurements may have been causing perm gen exceptions
in the clients. Instead, we now store arrays of doubles
and generate the equation at runtime.
Add C/F/K conversions
Strip null conversions

Rather than store conversions which return a null,
let `map.get()` return a null anyway.
Remove 'Show unset fields' from Original Metadata
Show LightSource type instead of 'Laser'
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.
Merge pull request #3222 from hflynn/m2-history

Initial draft for m2 version history
Change order of metadata actions, check initialized and version
Fixed another NPE
Adding removal of deprecated methods to history
Regenerate keystore (+1000 days from now)

rm lib/keystore
./build.py keystore
Also mention Gateway and methods
Merge pull request #3252 from joshmoore/history-update

History update
merge develop -Dorg -Ssuccess-only: PR 3156 (Templates cleanup)
merge develop -Dorg -Ssuccess-only: PR 3157 (Reset password)
merge develop -Dorg -Ssuccess-only: PR 3207 (General pane web 2)