Final batch of async event fixes
This PR entails the following changes:
- Made WS events async (should further prevent unrecoverable crashes)
- Made EventArgs entity fields properties (to prevent modifications by event handlers)
- Made event triggers pass immutable collections to EventArgs (ditto)
- Made certain entity fields properties (they should be anyway)
- Minor bug fixes and formatting changes
Note that these changes should not break any APIs.