Dynamically generate AngularJS table based on array of column and row objects with support for sorting, reordering columns, dynamically choosing filters, and dynamically choosing directives for cell display.