Allowed adding attachments from strings and streams

I have added a new kwarg to the add_attachmen method 'data'. It can be a bytestring or a stream that contains the data to be added. This allows us to attach data that we don't have stored on the fs