Add error type for invalid values
Add equality comparison builtin
Generalise equals comparison function
Remove obsolete todo
Add logical negation
Merge branch 'builtins' into develop
Pull conversions into source file

This change is tiresome since it requires instantiating lots of
templates explicitly but it’s necessary to use error types while
preserving a sane file organisation.
Simplify code by using `as_literal`
Replace debug assertion by error handling
Enable compiler optimisations
Add list information functions
Merge branch 'builtins' into develop