Add a runtime dynamic link path to the runtime binary.

This is so that library function references outside of those archives
under ldconfig administration can be resolved by libdl.so at load
time.
A couple of units for foreign functions, and a shell script to make diffs of the cminusminus branch.
Weak arrays with potential for recycling the garbage.
See the comments in Weak.mlp for details. Untested. I hope to be able
to use these things to do a better job than the IntInf interface
currently does of managing memory. As it stands it allocates a new mpz
structure for every operator that is applied. My idea is to keep a
weak array of old values, and scan these periodically to see if any
have been dropped into the garbage. Any we find can be saved in
another (non-weak) array and used instead of allocating new ones.
Changes to Ffi interface.
Now static vectors are represented in memory as Word8Array.array
objects, so we can make aliases for the buffers and use the standard
Word8Array unit interface to access and update them. Also changed the
finalisation functions that we can make static vectors of any off-heap
structures and register a custom finalisation function for them. For
example, one might use static vectors to represent a mmap'ed region
and have the finalization function call munmap when the object becomes
unreachable. So we could implement Posix shared memory buffers
similarly.
.gitignore hacks
Merge branch 'master' of https://github.com/IanANGrant/red-october