Feature/program preference

StateStore - https://issues.cask.co/browse/CDAP-395
Bamboo : https://builds.cask.co/browse/CDAP-DUT321
It is transaction safe - state is updated at the end of the program's transaction context. And I believe it is not thread safe since it performs dataset read/write underneath. I will update the javadocs.