Feature/program preference

StateStore - https://issues.cask.co/browse/CDAP-395
Bamboo : https://builds.cask.co/browse/CDAP-DUT321
Usually all methods that we exposed through Context object are thread safe so that it can be used in all scenario (e.g. in Worker case). Also, is this method can only be called inside a transaction? Will it throw exception if someone tries to call this method outside of transaction.