use warn rather than print STDERR
isolate function in a new Tool module
drop useless variables
move 'Manufacturer' namespace as 'Tools::Hardware'
move all rules-based functions in Tools::Hardware

This allows better readability about rules in usage
always use generic function as default
rename tests
better documentation