First stab as APSEthernet controller class.

--CAR and BRJ
To avoid circular references had to split out MACAddr and APSEthernetPacket classes into their own files.
Add hashability to MACAddr

Allows us to use in unordered_map.

--CAR and BRJ
Update cmake file for new APSEthernet, MACAddr, APSEthernet files.
Add new files and unordered_map, queue.
Huge grab bag of updates to get things working with new APSEthernet approach.

--CAR and BRJ
Run packet receiving handler in separate thread.