Drop unused #include <iomanip>.

We do all of this kind of stuff through the Bytestream interface now.
Move type classes out of AST directory/namespace.

We will use the same type infrastructure for the AST and DAG, so start moving things out to a common directory.
Let all types be owned by a FabContext object.

In order to use the same types in both the AST and the DAG, we need a third party to own them.
Use the same types for AST and DAG.
Add the "nil" type.

This is for things that have no type (like the element type of an empty list).
Add support for empty lists.
More list testing.
Add poor man's covariance to Join.

C++ doesn't allow covariant method arguments, so we can't call Join::csv(PtrVec<Printable>) with a PtrVec<Type>, even though Type is Printable.

Instead, add templates so that we can do this sort of thing.
Add Bytestream::{Plain,Formatted}().

Rather than providing a File() builder, what we really want is to distinguish between formatted and unformatted output.

We still keep the isatty() code for stdout and stderr.
Add Printable::str().

Provide a default implementation of the "get me a string representation" method based on the unformatted output from PrettyPrint(). This can be overridden if desired.

This reduces some code duplication.
Implement proper function types.

A function's type is its entire type signature, rather than just its return value.
Fix indentation in foreach pretty-printing.
Add more detail to function parsing test.
Include AST/ast.h rather than every AST header.

We already enumerate the complete set of AST headers in one place. There is no need to do it in another one.
Add operator << (Bytestream&, Operator).
Trivial improvements to list pretty-printing.

By using Bytestream::Reset more, we can generate more consistent output (and not leave side effects lying around).
Change concatenation to addition.

It will be useful to use the same symbols for addition and concatenation. For instance, [ 1 2 ] .+ 1 is [ 2 3 ], so why shouldn't [ 'hi' ] .+ ' Bob' be [ 'hi Bob' ]?
Implement binary operators.