Stop confusing Rip's object model with Ruby's
Stub in Rip::Core::{List,Map,String}
Implement Rip::Nodes::{List,String}#interpret
Implement Rip::Core::{Character,String}.@.{uppercase,lowercase}

TODO @.class.new(@.map(:uppercase))
Implement Rip::Core::List.@.reverse
Implement Rip::Core::List.@.{head,tail}

`head` and `tail` are aliases for `head_left` and `tail_left` respectively
Start implementing List and String classes
Implement Rip::Core::String#==

Should have been part of commit bb80d08ca3
Add exception for code loading

System.require uses the following loaders (custom loaders are configurable)

# package loader
System.require('package/file') # load package module relative to ./lib/* (first-party) or ./vendor/**/lib/* (third-party)

# filesystem loader
System.require('./some/other/file') # load (non-)package module relative to current module
System.require('/opt/file') # load (non-)package module at absolute path

# url loader
System.require('https://www.example.com/path/file') # load module over network (should not be used except from trusted, secure network)
Implement Rip::Loaders::FileSystem to load modules
Implement Rip::Core::System.class_instance

Also include `System` in the global context and implement
`System.require` to load Rip modules (absolute or relative to
working directory)
Instantiate Rip::Utilities::Scope with optional origin
Refactor Rip::Loaders::FileSystem.load_module to consider origin of loading module

Automated tests for this are hard. Will be covered later in integration
tests. Confidently manually tested though
Implement code loading of relative or absolute file paths