ref: 1f61d1688557fd1b677bfba9b9641fab47a135c5 dhall-ruby/test d---------
Reject invalid "characters"
Fix expectations for tests
implement as Location and use URI internally
Self-describe CBOR for Expression#to_binary

CBOR.encode(expression) and Expression#to_cbor remain untagged "standard
Dhall" but the default Expression#to_binary now always tags the output
with self-describe CBOR.  This is supported by the standard for decoding
the output will still be compatible with all compliant implementations,
and it makes the binary format easier to identify in the wild.
Switch IntegrityCheck encoding to multihash
Split IntegrityCheck and NoIntegrityCheck
Not using hexdigest in the constructor anymore
Run dhall-lang binary-decode tests
Decode unions the same way as_dhall makes them
Use Dhall names for everything that encodes untagged
Disambiguate hoisted union tags properly

An array may contain two nomnatively-equivalent types who are
structurally different -- so they need different (but related) union
tags since they will not share a type.
Update and run latest alpha-normalization tests
Update to latest dhall-lang
Hoist single-label enum into array
Split Union and Enum

Stop putting special case conditionals for Union#value.nil? everywhere
and just split the classes.
Customizable cache

Caches implemented in this commit:

StandardFileCache - cache conforming to dhall-lang
RamCache - stores in a hash, meant for single-load caching
NoCache - when you want to be sure
Default max import depth of 50

So even without a timeout, there is a limit on bonkers cases.

Standard resolver defaults to INIFINTY since the standard does not
define a depth limit.
Timeout mechanism

Sets timeouts in HTTP readers, checks for deadline exceeded before each
resolution step, and uses Timeout::timeout for pure-ruby computations.
Document Dhall::Coder