Binary encoding

Every AST node uses as_json to express the generic structure for
encoding itself.  Expression aliases as_cbor to as_json by default and
then uses as_cbor in to_cbor (aliased as to_binary).

This design is because we need to override the encoding of Double for
CBOR, but want to keep the normal Float value for as_json in case that
is used directly (to avoid surprising the user).
If trying to import from IPFS, fallback to gateway
Update to latest dhall-lang
Run all tests on CI
First pass at import resolution
Tests are long for good reasons
Try on generic visitor
Builtins are part of the standard set
Generic subexpression_map

Make every Expression a ValueSemantics and use the known list of
attributes to map generically over any AST node.

Introduces a conditional, but removes boilerplate from every single
Alpha normalization

Internal flag to disable for acceptance tests from the standard (which
assume beta-only normalization in some cases).  Otherwise, just always
alpha normalize as we go.
Update to fixed tests
Update to latest binary format
Run all tests in CI
Fix binary tests
Migrate to dhall-langv6.0.0
Need dhall for build
Use git-extras for `git root` in build
Re-gen build files