Make environment noncopyable
Move `get_global_environment` to its proper unit
Make `environment` copyable again

`boost::apply_visitor` cannot work with noncopyable, movable types.
Introduce more error types
Recover after error and continue REPL
Add error handling for empty list
Pretty-print boolean values
Merge branches 'errors' and 'output' into develop
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