Changes only in Hortonworks github and not in Apache Slider release 0.6.0 and hence not covered by CHANGES.txt.

Bug Fixes

SLIDER-931 Security permissions on set up ZK path are too lax
BUG-43590 HBASE_THRIFT not deployed on HBase-Slider
