Creates an event that can be subscribed to by clients. Calling this method
will internally borsh serialize the event, base64
encode the bytes, and then add a msg!
log to the transaction.
The event attribute allows a struct to be used with
emit! so that programs can log significant events in
their programs that clients can subscribe to. Currently, this macro is for
structs only.