Define how ports are requested (closes #25, #20, #19, #4)

Detailed discussions are in #25, #20, #19, #4.

* Defined how requestPorts() method works
* defined how getInfo() works
* made SerialPortInfo into a map (was SerialPortDetails)
* introduced the concept of "recommended serial port metadata"
* defined the rules for "getting serial port metadata"
* Updated the security considerations section.