Add @Singleton to Properties class

Prevent loading the plugin configuration more than once. Before this
change, configuration file was loaded every time the Properties class
is injected into another class. Now the same instance in injected into
any class that depends on it so the configurations file in no longer
loaded multiple times.

Properties can be concurrently accessed so synchronize the
getBasicProperties method to prevent concurrent lazy loading of the
properties map.