This is a restructuring of my perms for i2c - hopefully this version will be a little
easier to maintain than the huge perms.c file which had everything thrown in willy-nilly.

../perms.inc is the IMP version of the perms which is compiled at the head of
every IMP program.  However the implementation of the perms code is currently
entirely written in C so it is important for maintainers of this suite to
ensure a consistent mapping between the IMP headers in perms.inc and the
corresponding C headers in perms.h

perms.h is the encompassing header file that includes the various components
of the perms support.

imptypes.h defines some structured types needed by imp programs for data
that does not have a direct equivalent in C, such as IMP's %string and %name
data types.

internal.h and internal.c are the primary code for perm routines and are
implemented in C as 'static inline' - see visible.c for the callable procedural
wrappers that an IMP program calls

internalfile.h and internalfile.c are support routines for IMP I/O (and program invocation)

pbacktrace.h and pbacktrace.c support one of the many possible implementations of a post-mortem backtrace

psignal.h and psignal.c implement imp's %signal mechanism on top of C's signal() call.
psignal-test.c is a test program

ptrace.h and ptrace.c will contain runtime tracing/profiling code.  Eventually.

visible.h contains the C procedures that correspond to the IMP routines in perms.inc
visible.c is a test program that's basically what i77 would output but without needing i77.

impread.h and impread.c are for Imp's READ procedure, which gets a file of its own: it's a messy one!

--

I have not yet moved everything over from the old perms.c so at the time of writing
there is still some work to be done, but it's getting quite close now!
