Python compiler generates invalid python when enum ids or field names are python keywords
Python has [33 keywords](https://docs.python.org/3.5/reference/lexical_analysis.html?highlight=reserved#keywords). 30 of them are valid ids as far as `ksc` is concerned, so it happily generates exciting code that isn't actually valid python, like
```python
    class PythonKeywords(Enum):
        and = 4
        as = 5
        assert = 6
        break = 7
        class = 8
        continue = 9
        def = 10
```
and
```python
 def def(self):
        if hasattr(self, '_m_def'):
            return self._m_def if hasattr(self, '_m_def') else None

        self._m_def = self._root.PythonKeywords.def
        return self._m_def if hasattr(self, '_m_def') else None
```

[Here's a testcase with all 30 keywords](https://gist.github.com/Natronium/edcba05f7f474de150da472c1d1344b1). I stuck it in a gist since it's a bit too long to be embedded

Unfortunately, I'm not really sure what the best solution is here. It seems like there are a few options:
* Mark this as `WONTFIX`, and add some documentation somewhere that says "Hey, don't use reserved keywords as names!". This is probably a bad idea, since it means anyone writing a spec will need to worry about what might be a keyword in any of the languages Kaitai supports, or will support at some point in the future.
* Have `ksc` generate an error instead of generating invalid code. 
* Modify the ids somehow.
* Modify the generated python so that the keyword-ness of IDs doesn't matter (e.g [\_\_getitem\_\_](https://docs.python.org/3.5/reference/datamodel.html#object.__getitem__)). This one seems likely to be messy and/or error-prone