AngularJS directive for creating dynamic forms based on schemas that aren't known until runtime