ksy_schema allows invalid schemas
When developing the rust kaitai compiler I found some oddities in the schema that allow it to successfully validate incorrect KSY file and some just weird things:
- Parameter name can be `true` or `false`. For what reason? Such parameters either hide true/false constants in expressions or won't be availible, because will be hidden by this constants, or such expression just not compiles. On the other hand parameter name can't be `null`, that is denied by schema
- `type.cases` can point to types with names
  - `true`, `false`, and that correctly refers to types `true`/`false`
  - `null`, but that fails to compile
  - number, that fails to compile
- `type.switch-on` and `meta.endian.switch-on` allows `null`, `true`, `false`, and numbers. For what? Also, `null` causes NPE in compiler
- `meta.id` can be `false` or `true`, which is pointless. On the other hand, `null` is not allowed

All things checked in https://ide.kaitai.io/devel/

Example schema -- validates via https://github.com/kaitai-io/ksy_schema (can be checked at https://jsonschemalint.com/#!/version/draft-07/markup/yaml):
```yaml
meta:
  id: type_bugs # allowed values "true" and "false", but not "null". That is strange names
  endian:
    switch-on: null # exception in compiler
    cases:
      1: be
params:
  - id: false # For what reason parameter name can be boolean value?
  - id: true  # Same here
#  - id: null # denied by schema
#  - id: 42   # denied by schema
seq:
  - id: id
    type: strz
    encoding: ascii
  - id: choice
    type:
      switch-on: null # exception in compiler. true/false/number also allowed
      cases:
        true: true
        false: false
        null: null # exception in compiler
        1: 1 # invalid -- "1" is not allowed as name of type
types:
  true: {}
  false: {}
  null: {}
```
