Support hardware-id, hardware model, and template simultaneously

Changes the way the hardware spec is created according to issue #18