genfoam: Look at the type of the generator when unpacking a cross.

This comes from things like 'for x in pairs(a, b)',
where pairs: ?? -> Generator Cross(A, B)..
Add hashCombinePair function (leaving hashCombine to be used in strHash).
Hashcode algo changed again (to be compatible with axiom's strHash).  Update
test output to reflect.
terror.c: Don't assume that an operator is immediately a Map tform.. we
might need to mangle it away from something else (eg. a declaration or
substitution).

This allows errors like:
zzz == (a: I): I +-> a+1
zzz("hello")

to be reported nicely.
terror.c: Just issue an error message when we don't have an exit type
(this usually happens with the generate keyword and type error on yield.

The error created isn't that helpful, but better than blowing up.
Add a function exploring hash functions - this was mostly for tracking
down an interop problem with axiom.. We'll be using the newer hash function,
but might as well keep as a step by step description of how function hashing
works.
showexports: Dump the cascaded exports from a domain.
syme.c: Add 'symeExportingSyme' function to identify the original
definition or a symbol - ie. ignoring extensions.

Use in gf_imps.c to ensure computed source and hashType matches correctly.

This should fix some odd segfaults in the runtime code.
Add ald_flags (a Bit Array datatype) to the build.  For some reason it
wasn't included.