New computation models.

Merge in 3 months of alternating the computation model to shift computation from local to remote by preference list or cluster-wide.

This branch covers the following changes:

* Add basic lattice types.
* Add remote code loading API.
* Add support for per-preference list computations.
* Add threshold read operations.
* Add support for cluster-wise computations.
* Add coverage computation mechanisms for cluster-wide computations.
* Resolve deadlocks in computation model.
* Extract the ETS backend out into a more generic core function that can be backend agnostic.
* Provide a basic program rewriting mechanism to ensure we can lost distinct programs.