Add connection checks to connect/disconnect/read/write methods.

Also make Instrument abstract and have GenericInstrument for new instruments.
Start SCPI macro helpers for creating getter and setters.

With macro/expression help from @blakejohnson