Allow for cross compiling to a polymorphic target.

Use a record with compiler word primitives coupled with a defining
record to build up words being defined.
The target version (cross compiler) compiles to a polymorphic
representation which can be instansiated with different targets.

While this builds, there still remains work on setting up the
target dictionary and figure out how to deal with cell widths.
As before, the target output that is in place will need a lot of
further work as primitives currently are just slices of assembler code
that need proper interface with the Forth machine, which is
non-existent at the moment.
Added ignore of doc output to the .gitignore file.
Merged Forth.Interpreter.State and Forth.Compiler to Forth.Machine

This ways feel more natural as they are tightly coupled together.
Also introduced a Forth/CrossCompiler directory.
Removed the Cell type class.

It seems no point to keep the cell size variable, the interpreter can
run in 32-bit mode and targets that need another integer size will be
able to deal with it in the cross compilation primitives.
Removed the cell argument for the Primitive type class.

As we no longer intend to have different cell values depending on the
interpreter vs cross compiling targets, the cell argument for
Primitive is no longer needed.
Added CROSS-COMPILER word to enable the cross compiler.

Also needed to add a declaration of 'Primitive (IM t1)' for the target
dictionary.

It is now possible to turn on the cross compiler and dump target
output. As the dictionary is polymorphic on the target instruction
set, the same dictionary can be dumped for any known target.