insert_part maintains an ordered list so we don't need a separate sort step in the view's print call; this way we have equivalent view cade with entirely polymorphic calls to the backend (list or array version)
rename InventoryDatabase to Parts
Inventory Parts DB implemented as ADT, though I'm still cheating with the tests that have a copy of the struct definition