NPE if field in expression language context is null
Consider following KSY:
```yaml
meta:
  id: null_bugs
  endian:
    switch-on: null
    cases:
      null: be # technically key 'null' is expression. That is really useful?
params:
  - id: null
    type: bool
seq:
  - type:
      switch-on: null
      cases:
        null: u1 # technically key 'null' is expression. That is really useful?
```
First, as you can see in web-IDE, having `null` as value for `switch-on` and `params.id` key causes NPE in compiler. If you replace `null` with `'null'` (ie. turn it into string), NPE is gone, but compiler generates incorrect code (at least for JS) -- reserved word `null` used as parameter name. So, currently @dgelessus assumption (from #773) is wrong:

> The compiler doesn't allow `null`/`false`/`true` as parameter names (either as YAML `null`/booleans or as strings), so the schema should disallow that too.

Currently that is allowed (you can check in web-IDE that JS-code will be generated). And should compiler also discard something like:
```yaml
...
  endian:
    switch-on: null + 1
    cases:
      null + 1: be
```
In that case `null` is parsed as identifier in expression.

My 5 cents: that's all should be allowed, but each target should rename invalid identifiers into something valid in target language.

Another question is that is really necessary treat `cases` keys as expressions? For example, such KSY currently is valid:
```yaml
meta:
  endian:
    switch-on: 1
    cases:
      0 + 1: be
```
but I don't see any benefits from such flexibility.