Create module namespace

This branch creates a consistent module namespace so that the change of naming conflicts is greatly reduced when using other projects from IErlang.

Note that this is built on top of the previous three branches, and so should be merged after they are.