In this part I am going to create an object for keeping track of our physical device, enumerate over physical devices, and select a physical device for our application.
I deviate from the vulkan tutorial here a little bit because I wanted to encapsulate physical device related functionality in a specific class. This will become more useful later when dealing with memory buffers. I also create the surface in a different order.
This part relates to Drawing a triangle / Setup / Physical devices and queue families in the original tutorial.