New object model for overall program structure.

Rather than the overly-generic (and poorly-named) "Unit" class, we now
have an abstract class "Routine" which represents a bunch of code that
can be executed, and then three concrete subclasses "Function", "Module"
and "Task" that represent the three different variants of this concept
that will exist in the language.

A "Program" then just points at a particular "entry task", which is the
task that will be scheduled first on startup. From here we can walk the
call graph to discover the full set of Routines that need to be included
in the compiled program.

The Task class is removed. None of the code using it is presently
exercised by the tests, but there *is* some remaining code using it and
in particular as of this commit the "alac" tool (currently just a
playground for messing with the compiler internals until a proper compiler
driver is ready) cannot run due to intermediate code generation still
expecting the presence of Unit.