Added locators, crud fns & tests for hw-models

Why does `new_name` default to `None`? If a hardware model's name is being updated, shouldn't `new_name` be a required parameter?