Add QmiEndpoint for abstracting out the QMI transport
This adds QmiFile to represent filesystem device nodes, which can be used to send QMI messages over e.g. USB. Then, we also add QmiEndpoint to abstract the transport, which can be QMUX or MBIM.
In the future there will be other abstractions for devices that appear somewhere other than the filesystem and need to be accessed in a different way.
Edited by Eric Caruso