[WIP] [DataTable] Adds ability to filter rows

Adds the ability to filter rows in the DataTable using the ModelList filter method in a non destructive way to the original data. 

Multiple filters may be added, removed, and applied in any order. Filter functions are stored in a protected array to maintain order and filtered data is stored as a new internal ModelList. You can clear out the filters applied at any time and have the original data returned to the DataTable. 

Filters can added as a single value, a range, a list of values, a regular expression to test, or a custom function. Filters are ran against each row in accordance to ModelList.filter method. 


Ping @lsmith @rgrove @ericf