niti: PrimitiveInstance::val can be null

Signed-off-by: Jean Privat <jean@pryen.org>
niti: use PrimitiveInstance for `null_instance` and `error_instance`

Signed-off-by: Jean Privat <jean@pryen.org>
niti: use `write_attribute` in old path of initializers

Signed-off-by: Jean Privat <jean@pryen.org>
niti: fix some comments

Signed-off-by: Jean Privat <jean@pryen.org>
niti: Instance is now an interface

So extern class or whatever can be used to code instances

Signed-off-by: Jean Privat <jean@pryen.org>