Make lib flexible

This PR allows the toopher .Net client library to support future fields returned by the API without modification.  The basic fields for each response type are still supported as first-class properties of the response object.  However, the response objects are also now indexable by field name so library consumers can access fields that are provided by the API endpoint, but not specifically supported by this library.

To access the basic fields supported as properties, just refer to them as usual:
```C#
PairingStatus pairing = api.GetPairingStatus(pairingId);
if (pairing.enabled) { ... }
```

To access fields that are not specifically validated by the library, you can index the Status object as if it were a read-only `IDictionary<string, object>`:
```C#
AuthenticationStatus auth = api.GetAutomationStatus(requestId);
if ((bool)auth["totp_valid"]) { ... }
```

Nested objects in the api can be accessed as well:
```C#
AuthenticationStatus auth = api.GetAutomationStatus(requestId);
Asssert.AreEqual(auth.terminalName, (string)((IDictionary<string, object>)auth["terminal"])["name"])
```