Check strings against any basestring subclass instead of str.
Handle data type and JSON field name case-insensivity.

In the state tracker in the server and in the simulator we need to
use the exact same case-sensitivity checking type as in the Sensorino
firmware, and this was a little tricky.  Solve it everywhere for once.

Also add more warnings on unknown datatypes.

Fix typos in service description parsing, now tested.
Boolean actuators special-case: no data means flip value.

For now we modify the original message passed to update_state.. we
really shouldn't do that.
Don't try to parse the 1st Service ID value as data channel.
For now don't add dataType fields to each service.

We'll see if there's any use for that in the future.
Don't error in channel count check in responses to "request" msgs.
Handle error messages from the Base (no remote addr).
Improve tracking of Success/Error status for remote requests.

Mostly clean-up and streamlining but also make sure any kind of
incoming or outgoing message terminates the previous transaction
if there was any.
When creating sensor widgets only show sensor channels to user.