initial go at changing up chassis to agent mapping
hardware map -> hardware_type, hardware_id
check X-Forwarded-For header
implement find_by_hardware
simplify find_by_hardware
make HardwareToChassis.chassis_id a primary key
remove primary mac address from chassis model
create chassis model if not found
fix bug
a few fixes for find_by_hardware
remove fetch_agent_configuration
Clean up after model changes

Gets rid of most uses of `Chassis.primary_mac_address` and
`MacAddressToChassis`. Also cleans up some test/flake8 things.
fix up tests
store agent ID on chassis rather than chassis ID on agent
oops, missed this