feat(util/shared_mutex): add shared_mutex object, this is a temporary replacement for std::shared_mutex that will be available in C++11

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
fix(lua): make sure environment objects can be safely accessed/updated from current threads

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
feat(lua): allow environment object references to be moved between Lua states

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
feat(lua): allow Booleans to be copied between Lua states

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>