Updating singer_stream.py to allow schemas without properties
While utilizing tap-zendesk (https://github.com/twilio-labs/twilio-tap-zendesk) there are some cases where the generated schema does not include a properties key in the dictionary, causing the properties = self.schema['properties'] to fail.
Defaulting properties to an empty dictionary to prevent exception in these cases without unintended side effects.
Quick sense-check on this, is the absence of properties in the schema allowed by the singer spec? I took a quick look, but couldn't find a clear answer, in part because I don't have the data that causes problem. Basically, I'm wondering if the bug is on this end or in the tap you're using.
@lucas would you be able to merge the main branch into this PR to switch to the new dependency management format (pyproject.toml)?