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