An AngularJS directive for displaying and editing JSON tree