better handling of instruction

1. Instruction is an instance of IsString and hence a lot of convenience.

2. The constructor Instruction is hidden to achieve better safety.

3. the function `assemble` added to create the final textual form of
   the instruction
commenting on instruction and block comments
added abstract syntax of the assembly language program
Aim.Machines bothers only of machines now

The actual assembly language now is delegated to
Aim.Assembler.Language.
added the Aim monad
exposed Aim.Monad from the top leve
Merge asm language and monad defined.

1. We now have the Aim.Assembler.Language that captures the abstract
   syntax of the assembly language.

2. Also declared is the Aim monad.
some doc fixes
moved Size data type to Aim.Machine
added arch phantom type to Arg
separated some of the utility functions in Language module
some more documentation
exposes the internals via the internal module
added the syntax module
exposing Internal.Language and Internal.Syntax directly
rearranged export list for better documentation
declaration now is a record type
added support of verbatim text
functional context taken into consideration
some more documentation for argument