Changed my mind, GetPart() should not call handler(null) for errors. Only for part-not-found
PartsView: If index < 0, set index to 0
DBModel: Cache PartTypes for later lookup
DBModel: Remove Part_types from SELECT

attributeRow needs to contain ONLY columns from Parts
extendedRow needs to contain ONLY columns from TypeName_attributes
PartTypeEntry: Add copy constructor
PartEntry: Add Part_type property
DBModel: Supply typeName to new PartEntry()
DBModel: Dump results when debugging
PartEntry: Add copy constructor
Util: Add function for creating DataTable from Attribute dictionary
PartEntry: Add methods to return DataTables from Attributes
PartsView: Add delete button