Add ZMAP write support for earthquake catalogs

More formats are likely to follow later. Let me know if you need me to make any changes.

Best
Lukas
It is a bit safer to wrap this in a `try/finally` statement as a `with` statement is not applicable here. That way the file is always closed, no matter what.

```python
try:
    cat_string = self._serialize(catalog)
    fh.write(cat_string.encode('utf-8'))
finally:
    if file_opened:
        fh.close()
```