remove local copy of golex: download it in configure.sh instead
types: change FuString, FuList to structs

This will allow us to embed other types in them for easier code reuse.
For example, DefaultLookup() could be done with embedding an empty
type that just provides a no-op implementation of Lookup().
types: use embedding to reduce proliferation of tiny Lookup() methods
dag: simplify ListNode a smidge; beef up test coverage
rearrange so method implementation order matches interface order

Types that implement FuObject always implement FuObject methods first:
Typename(), String(). etc. Then (when applicable) come Node methods.
build script: add forgotten dependency: of course empython.c depends on empython.c.in
types: replace unsupportedOperation() with UnsupportedAdd()

unsupportedOperation() was overly general and not general enough. That's what you get
for overthinking things. Just do the simplest thing that can possibly work.
dag: use types.UnsupportedAdd() instead of reinventing it locally
coverage: pass build tags to gocov

What we build we test, and what we test we want coverage data on.
coverage: move output files into .build/
build scripts: include line number info in generated C files
plugins: expose Python functions to Fubsy code.

The rules are simple: if a name does not start with '_' and it refers
to a callable object, it will be visible to Fubsy code. That means
doing stuff like "from os.path import join" will clutter up the Fubsy
namespace, so don't do that.