raco.compile: cleanup optimize

1) no need to define inner function for function only run once

2) replace single named argument with **kwargs dict
raco.compile: remove eliminate_common_subexpressions

It's not been tested or used in >1year, and there's no reason to think
it still works. However, I separated this removal into a separate
patch so that we can revert it if necessary.
raco: add base abstract language.Algebra class

And make all the languages use it, and verify this in compilation.
optimize: remove source argument since it's never used

In practice, we don't always compile a raw program using exactly two algebras. This
code is overspecialized, instead let's let you re-invoke optimize for as many
algebras as you like.
hellodatalogworld: remove unused code

now that it has compile errors I'm *certain* it's not used.
external_iterate.py: remove unused file
raco.scheme: change print to assertion output text
raco.language: remove LogicalAlgebra

It does nothing
remove pyra/pythonlang

This would be nice functionality to have, but it's untested and
incorrect and we're wasting cycles maintaining it.
raco.expression.function: fix cyclical import

It was importing itself
scripts/myrial: minor cleanups

style fixes only
myrialang: trivial cleanup
raco: use types.X_TYPE constants rather than magic strings
remove old C++ compiler
raco.compile: fixup passing arguments to algebra
Merge pull request #300 from uwescience/big-cleanup-v3

Big cleanup v3